题目描述
如下程序的功能是计算 Fibonacci数列的第n项。函数fib()是一个递归函数。请你改写该程序,计算第n项的同时,统计调用了多少次函数fib(包括main()对fib()的调用)。
解题思路:
共使用了多少次递归函数等同于调用次数,因此使用次数每次+1即为所求结果。
代码实现:
1 #include<stdio.h> 2 3 int fib(int k); 4 int i=0; 5 int main(void ) 6 { 7 int n; 8 scanf("%d", &n); 9 printf("%d ", fib(n)); 10 printf("递归调用了%d次 ",i); 11 return 0; 12 } 13 14 int fib(int k) 15 { 16 i++; 17 if(k == 1 || k == 2) 18 return 1; 19 else 20 return fib(k-1) + fib(k-2); 21 }