华拓科技网
您的当前位置:首页用递归方法编程计算输出Fibonacci数列,同时打印出计算Fibonacci数列每一项时所需的递归调用次数。

用递归方法编程计算输出Fibonacci数列,同时打印出计算Fibonacci数列每一项时所需的递归调用次数。

来源:华拓科技网

 

用递归方法编程计算输出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


斐波那契数列:11235813213455…… ,以如下被以递归的方法定义:从第三项开始,每一项都等于前两项之和,显然这是一个线性递推数列。

代码如下


//斐波那契数列
//从第三项开始,每一项都等于前两项之和,显然这是一个线性递推数列。
#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;
}

因篇幅问题不能全部显示,请点此查看更多更全内容