Iterativ/Rekursiv

Magges69

Grünschnabel
Hallo,

ich habe ein Problem folgende Formel rekursiv zu realisieren. Mit Schleifen läuft die Funktion, doch bei der Rekursion komme ich auf keinen grünen Zweig.
Die eigentliche Formel ist angehängt ;)
Hier der Code zur iterativen Form: (Die Funktion "power" ist eine eigens geschriebene Potenzfunktion)


double f1(int x)
{
int i=x;
double ergpow, ergsqr;
double summe = 0;
for (i=x; i>0; i--)
{
ergpow = power(i,i);
if (i==x)
{
summe = sqrt(ergpow);
}
else {
summe = sqrt(ergpow +summe);
}
}//Ende der for-Schleife

Vielen Dank für eure hilfreichen Kommentare :-)
 

Anhänge

  • f1.jpg
    f1.jpg
    5,1 KB · Aufrufe: 94
Vielleicht hilft dir das hier weiter:

C++:
#include <stdio.h>
#include <stdlib.h>
      int potenz(int x, int n){

      if (n>0)
           return x*potenz(x,--n); // rekursiver Aufruf 
        else
           return 1;
      }

      int main(void){

        int x;

        int n;

        int wert;

        printf("\nGib x ein: ");
  
        scanf("%d",&x);
  
        printf("\nGib n ein: ");
  
        scanf("%d",&n);
  
        if(n<0){
  
           printf("Exponent muss positiv sein!\n1");
           
        }
  
        else{
 
           wert=potenz(x,n);

           printf("Funktionswert: %d\n",wert);
           
        }
        system("pause");
        EXIT_SUCCESS;
        return 0;

      }

Das ist simple.. :) Die rekursive Funktion muss solange weitermachen bzw. die Funktion muss solange sich selbst aufrufen bis der exponent(n) = 0 ist. ;)
 
Vielen Dank für die Hilfe.
Allerdings ist nicht die Rekursion der Potenzfunktion gefragt (diese habe ich bereits), sondern eine Rekursion für die von mir an das Posting angehängte Grafik. Bei dieser fehlt mir der Durchblick.


MfG
 
So, hier jetzt mal der Code.
C++:
double f1Rek(int x)
{
static double ergf1=0;
unsigned int i = x;
     
if (i > 0)
   {    
   ergf1 = (sqrt(ergf1 + power(i,i)));
   return f1Rek(i-1);
   }  
     
else   {   
       return ergf1;
       }
      
}
Viel Spass damit!
 
Zuletzt bearbeitet von einem Moderator:
Zurück