//使用递归和数组求斐波那契数列
#include <stdio.h>
#define N 1024
int a[N];
int fib(int n){
if(n <= 1){
return a[n];
}else{
if(a[n] != -1){
return a[n];
}
//使用数组记录中间结果,避免重复计算,降低运行时间
a[n] = fib(n-1) + fib(n-2);
return a[n];
}
}
int main()
{
for(int i=0; i<N; i++){
a[i] = -1;
}
a[0] = 0;
a[1] = 1;
int n = 3;
printf("Input Num:");
scanf("%d",&n);
int result = fib(n);
printf("fib(%d) = %d\n",n,result);
return 0;
}
/*
C:\test>a.exe
Input Num:46
fib(46) = 1836311903
*/
使用递归和数组求斐波那契数列
于 2016-05-28 21:59:16 首次发布