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

请教一上递归(斐波拉契数列)的执行顺序

2012-10-28 
请问一下递归(斐波拉契数列)的执行顺序var a 0function foo(x){if(x 0){foo(x-1)}return a + x}co

请问一下递归(斐波拉契数列)的执行顺序
var a = 0;
function foo(x){
  if(x > 0){foo(x-1);}
  return a += x;
}
console.log(foo(5));
请问这个是如何执行的?

[解决办法]
这个问题,你可以写个页面,然后用调试工具通过监视变量x自己就能试出来,我就这么试出来的,可能不是很准确,说下我理解的流程:
执行foo(5);进入if(x>0)的判断,为真,则执行foo(4);再进入if(x>0)的判断,为真,进入foo(3);……
直到执行foo(0);x>0的判断为假,执行【foo(0)内的】return a +=x; a= 0;
foo(0)函数执行完毕,则foo(1)的if(x>0)判断结束,执行【foo(1)内的】return a +=x; 返回a=1;
foo(1)函数执行完毕,则foo(2)的if(x>0)判断结束,执行【foo(2)内的】return a +=x; 返回a=3;
foo(2)函数执行完毕,则foo(3)的if(x>0)判断结束,执行【foo(3)内的】return a +=x; 返回a=6;
foo(3)函数执行完毕,则foo(4)的if(x>0)判断结束,执行【foo(4)内的】return a +=x; 返回a=10;
foo(4)函数执行完毕,则foo(5)的if(x>0)判断结束,执行【foo(5)内的】return a +=x; 返回a=15;
得值:15
希望对你有帮助

[解决办法]
我用的火狐浏览器和firebug调试的

热点排行