用递归方法编程计算输出Fibonacci数列,同时打印出计算Fibonacci数列每一项时所需的递归调用次数。
**输入格式要求:"%d" 提示信息:"Input n:"
**输出格式要求:"Fib(%d)=%d, count=%d\n"
程序运行示例如下:
Input n:10
Fib(1)=1, count=1
Fib(2)=1, count=3
Fib(3)=2, count=5
Fib(4)=3, count=9
Fib(5)=5, count=15
Fib(6)=8, count=25
Fib(7)=13, count=41
Fib(8)=21, count=67
Fib(9)=34, count=109
Fib(10)=55, count=177
斐波那契数列:1,1,2,3,5,8,13,21,34,55,…… ,以如下被以递归的方法定义:从第三项开始,每一项都等于前两项之和,显然这是一个线性递推数列。
代码如下
//斐波那契数列
//从第三项开始,每一项都等于前两项之和,显然这是一个线性递推数列。
#include<stdio.h>
int count;//定义全局变量,表示函数调用的次数
long Fibonacci(int n){//考虑到随着数列递推数字过大,所以返回值类型为longf
count++;
long fib;
if(n==0){
fib=0;
}else if(n==1){
fib=1;
}else {
fib=Fibonacci(n-1)+Fibonacci(n-2);
}
return fib;
}
int main(){
int n,i;
long int fib;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
count=0;//每算一项之前就要清零
fib=Fibonacci(i);
printf("Fib(%d)=%d, count=%d\n",i,fib,count);
}
return 0;
}