#include <stdio.h> int cnt = 0; int fib(int n) { cnt++; if (n == 0) return 1; else if (n == 1) return 2; else return fib(n - 1) + fib(n - 2); } void main() { fib(8); printf("%d", cnt); }
下列程序执行后,输出的结果为()
n | f(n) | 计算次数 |
2 | f(1)+f(0)+1 | 3 |
3 | f(2)+f(1)+1 | 5 |
4 | f(3)+f(2)+1 | 9 |
5 | f(4)+f(3)+1 | 15 |
6 | f(5)+f(4)+1 | 25 |
7 | f(6)+f(5)+1 | 41 |
8 | f(7)+f(6)+1 | 67 |
n=8
cnt=1
返回f(7)+f(6)
f(7)
cnt=2
2F(6)+f(5)
F(6)
Cnt=4
3f(5)+2f(4)
F(5)
Cnt=7
5f(4)+3f(3)
F(4)
Cnt =12
8f(3)+5f(2)
F(3)
Cnt=20
13f(2)+8f(1)
F(2)
Cnt=33
21f(1)+13f(0)
Cnt =67