PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rekursion für "n hoch 2"



jancarsten
20-06-2002, 18:39
Hallo !

Ich soll zwei funktionen schreiben das mir folgende aufgabe rekursive und iterativ löst bzw. berechnet :


n hoch 2


nur komme ich nicht auf die lösung.

P.s. Bin noch ein C neuling

Ich poste hier mal die Aufgabenstellung:

quote:
--------------------------------------------------------------------------------
Aufgabe:
Rekursion für n hoch 2
n hoch 2 kann wie folgt rekursiv definiert werden:
Basis 1 hoch 2 = 1
durch Induktion lässt sich zeigen:
n hoch 2 = ((n-1) hoch 2) + 2(n - 1) + 1, für n > 2

Entwerfen Sie jeweils eine entsprechende rekursive und iterative Funktion zur Berechnung von n hoch 2.

--------------------------------------------------------------------------------



mfg janosch

anda_skoa
20-06-2002, 18:53
Rekursiv nach der angegeben Formel:



int nHoch2(int n)
{
if (n == 2) // basis fall
return 4;
else
return 1+ 2*(n-1) + nHoch2(n-1);
}


Ciao,
_

silic
20-06-2002, 19:55
hier eine Lösung (bei der rek. lösung wird n mal n verschachtelt addiert, bei der itertiven eine schleife n mal durchlaufen:


#include <stdio.h>
/* nhoch2 rekursiv*/

int rnhoch2r(int n,int i)
{
int r;

if(i==1)
return n;
else {

return(n+rnhoch2r(n,i-1));
}
};

int rnhoch2(int n)
{
return(rnhoch2r(n,n));
}

/*nhoch2 iterativ */

int inhoch2(int n)
{
int i;
int sum=0;


if(n==0) return 0;

for(i=0;i<n;i++)
sum+=n;
return sum;
};

int main()
{
int i;

for(i=1;i<10;i++)
printf("i=%d rekursiv %d iterativ %d\n",i,rnhoch2(i), inhoch2(i));
};


silic

silic
20-06-2002, 20:37
@anda_skoa: Deine Lösung terminiert nicht, die calls laufen sich mit negativem n beliebig weit runter (ich habs getestet)

silic