Kod: Zaznacz cały
# Uzupełnij funkcję rekurencyjną o elementy, które pozwolą wypisać drzewo wywołań rekurencyjnych. Nie korzystamy ze zmiennych globalnych.
Głębokość(kropki), Działanie, l=liczba wywołań
0, Obliczam f(6)=f(5)+f(4),l=1
1., Obliczam f(5)=f(4)+f(3),l=2
2.., Obliczam f(4)=f(3)+f(2),l=3
3..., Obliczam f(3)=f(2)+f(1),l=4
4...., Obliczam f(2)=f(1)+f(0),l=5
5....., Zwracam f(1),l=6
5....., Zwracam f(0),l=7
4...., Zwracam f(1),l=8
3..., Obliczam f(2)=f(1)+f(0),l=9
4...., Zwracam f(1),l=10
4...., Zwracam f(0),l=11
2.., Obliczam f(3)=f(2)+f(1),l=12
3..., Obliczam f(2)=f(1)+f(0),l=13
4...., Zwracam f(1),l=14
4...., Zwracam f(0),l=15
3..., Zwracam f(1),l=16
1., Obliczam f(4)=f(3)+f(2),l=17
2.., Obliczam f(3)=f(2)+f(1),l=18
3..., Obliczam f(2)=f(1)+f(0),l=19
4...., Zwracam f(1),l=20
4...., Zwracam f(0),l=21
3..., Zwracam f(1),l=22
2.., Obliczam f(2)=f(1)+f(0),l=23
3..., Zwracam f(1),l=24
3..., Zwracam f(0),l=25
rFibonacci (6) = 8
Kod: Zaznacz cały
unsigned long long fib(int n){
unsigned long long wyraz;
if (n==1){
printf("zwracam f(1)\n");
return 1;
}
else if(n==0){
printf("zwracam f(0)\n");
return 0;
}
printf("obliczam f(%d)=f(%d)+f(%d) \n", n, n-1, n-2);
wyraz=fib(n-1)+fib(n-2);
return wyraz;
}