【发布时间】:2014-12-21 23:50:09
【问题描述】:
我是 JavaScript 新手,正在尝试理解书中的一个示例。当我逐步执行此示例时,我希望 fac(4) 的值为 12。这将是 (4 - 1) * 4 的结果。
但是,当我从http://eloquentjavascript.net/00_intro.html 的在线书籍(靠近页面底部)运行代码时,我得到的值是 24。我在这里缺少什么?
function fac(n) {
if (n == 0)
return 1;
else
return fac(n - 1) * n;
}
console.log(fac(4));
我试图通过 Twitter 和在线研究找到答案,但没有成功。我知道我忽略了某些东西,但似乎看不到它。
【问题讨论】:
-
玩电脑——跟踪每一步的执行情况。
-
这是递归函数的“Hello World”。 ;-) 在没有递归的情况下计算阶乘实际上更简单,也更快,但是你去吧。
-
在学校里从来没有报道过这个(获得了社会工作学位),但我只花了大约一个小时就知道了。下面的两个答案都非常有帮助。
标签: javascript function recursion