通常的教材上讲到递归时,引用“斐波那契数列”的例子,其实我感觉这是一个误导。“斐波那契数列”的递归解决是效率最低的。
【递归版】
//打印斐波那契数列的前10项
#include
#defineMAX10
intfib(intn);
intmain(){
inti;
printf("斐波那契数列的前10项是:\n");
for(i=1;i<=MAX;i++){
printf("%d\t",fib(i));
}
return0;
}
intfib(intn){
returnn<3?1:(fib(n-1)+fib(n-2));
}
【迭代版】
//打印斐波那契数列的前10项
#include
#defineMAX9
intmain(){
intfib[MAX],i=2;
fib[0]=fib[1]=1;
printf("斐波那契数列的前10项是:\n%d\t%d\t",fib[0],fib[1]);
while(i<10){
fib[i]=fib[i-1]+fib[i-2];
printf("%d\t",fib[i]);
i++;
}
return0;
}