Rekursion Problem

DennisFoc98

Grünschnabel
Hallo, Leute. Ich verstehe den output meiner Funktion nicht. Der output ist 81 . Wie rechner der Computer das? Ich komme auf 78.

Code:
#include <iostream>

using namespace std;

int exponent(int basis,int exp)
{

    if(exp==5)
    {
        return 1;
    }

    else
    {
        return basis* exponent(basis,exp+1);

        /* 3(3,2) = 9+6=15
         * 3(3,3) = 9+9=18
         * 3(3,4) = 9+12=21
         * 3(3,5) = 9+15=24
         * total= 78;*/              <-----------------
    }

}





int main()
{
    cout<<exponent(3,1);


}
 
Weil der Rückgabewert der fünften Rekursion 1 ist, und Basis * 1 ergibt Basis (=3)
und 78 + 3 ist 81.
 
Öhm, ich weiß ehrlichgesagt nicht wo ihr beide das Pluszeichen her habt :oops:

Hier
return basis* exponent(basis,exp+1);
wird ja multipliziert. Macht ja auch Sinn, die Funktion heißt exponent.

Damit ergibt sich folgende Rekursion:
Code:
call: exp(3, 1)
    | 3 * exp(3, 2)
    | 3 * (3 * exp(3, 3))
    | 3 * (3 * (3 * exp(3, 4)))
    | 3 * (3 * (3 * (3 * exp(3, 5))))
    // call-chain endet hier,
    // ab hier folgt evaluation des stacks:
    | 3 * (3 * (3 * (3 * 1)))
    | 3 * (3 * (3 * 3))
    | 3 * (3 * 9)
    | 3 * 27
rtrn: 81

Gruß Technipion
 
Zurück