计算并打印Fibonacci数列每一项时所需的递归调用次数,数列第一项从1开始。
要求:
1)定义表示调用次数的全局变量count;
2)定义用递归方法求Fibonacci数列的Fib()函数。
函数接口定义:
long Fib(int a);
a为大于0的正整数。
裁判测试程序样例:
#include <stdio.h>
long Fib(int a);
/* 你的代码将被嵌在这里 */
int main()
{
int n, i, x;
printf("Input n:");
scanf("%d", &n);
for (i=1; i<=n; i++)
{
count = 0; //计算下一项Fibonacci数列时将计数器count清零
x = Fib(i);
printf("Fib(%d)=%d, count=%d\n", i, x, count);
}
return 0;
}
输入样例:
3
输出样例:
Fib(1)=1, count=1
Fib(2)=1, count=1
Fib(3)=2, count=3
代码:
int count;
long Fib(int a)
{
if (a == 1 || a == 2)
{
count += 1;
return 1;
}
else
{
count += 1;
return Fib(a - 1) + Fib(a - 2);
}
}