Witam , mam problem ze zrozumieniem rekurencji , w algorytmie do potęgowania
#include <stdio.h>
#include <stdlib.h>
int potega(int a, int n, int poziom);
int main ()
{
int a = 5;
int n = 4;
printf("\n\n %d^%d = %d\n", a, n, potega(a, n, 1));
return 0;
}
int potega(int a, int n, int poziom)
{
int p;
printf("%*c poziom %d: n = %d\n", poziom + 1, ' ', poziom, n);
if (n == 0) {
p = 1;
} else {
p = a * potega(4, n - 1, poziom + 1);
}
printf("%*c poziom %d: p = %d\n", poziom + 1, ' ', poziom, p);
return p;
}
Wiem ,że to nie jest oryginalny algorytm ,ale dlaczego a * potęga(4, n-1) wypisuje potęge 4^2 = 16 i później 64 a na końcu wszystko mnoży przez 5 . jak dla mnie jest to kompletnie nie zrozumiałe zachowanie