递归 :)
下面的递归函数效率不高,因为它在计算fib(n)(n> 2)时要计算两遍fib(n-2)如何解决这
个问题?
int fib(int n)
{
if (n==1||n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
可以不放弃使用递归方法吗?
[解决办法]
迭代
[解决办法]
岂止是两遍呀.
fib(n-1)还要调用fib(n-2),fib(n-3);
fib(n-2)还要调用fib(n-3),fib(n-4);
这样又要调用fib(n-3),fib(n-4),fib(n-4),fib(n-5),fib(n-4),fib(n-5),fib(n-5),fib(n-6)
接下来...
菲波纳契数列(是叫这个名字吧?)可是被当作递归的反面典型来讲的.
用循环多方便快捷.