首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

递归 :),该如何处理

2012-02-04 
递归 :)下面的递归函数效率不高,因为它在计算fib(n)(n 2)时要计算两遍fib(n-2)如何解决这个问题?intfib(i

递归 :)
下面的递归函数效率不高,因为它在计算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)
接下来...
菲波纳契数列(是叫这个名字吧?)可是被当作递归的反面典型来讲的.
用循环多方便快捷.

热点排行