例如:
public static int fibb (int n) {
if(n==0||n==1)
return 1;
else{
return fibb(n-1)+fibb(n-2);
}
}
行fibb(n-1)+fibb(n-2)
将如何被执行..就像fibb(n-1)
首先完成fibb(n-2)
开始或者究竟是什么一样,我对递归很新,似乎无法包装我的头脑是如何运作的。
帮助表示赞赏。
答案 0 :(得分:2)
首先,将执行递归调用(依赖于您的编程语言的顺序),然后将它们的结果汇总在一起。
答案 1 :(得分:1)
fibb(3) returns fibb(2) + fibb(1)
fibb(2) returns fibb(1) + fibb (0)
so you get 1 + 1 + 1 = 3
fibb(4) returns fibb(3) + fibb(2), we know fibb(3) returns three from above,
fibb(2) returns fibb(1) + fibb(0) also from above,
so fibb(4) returns 3 + 2 = 5
重要的是要注意,通过此实现,您必须计算两次以前的斐波纳契数。这意味着当你到达约20(猜测)时,它会变得很慢。