递归函数 - 计数如何存储在此阶乘解决方案中
Recursive function - how is the tally stored in this factorial solution?
在下面的函数中,它返回一个数字的阶乘,当递归调用该函数时,数字的高是如何存储的。
function factorialize(num) {
if (num < 3) {
return num;
}
return num * factorialize(num - 1);
}
factorialize(5);
我知道这是向后工作以实现 5 的阶乘,这是通过将所有正数乘以传递的数字获得的:
1 * 2 * 3 * 4 * 5 得到结果
我对如何存储或计算每个乘法的结果以不断向 120 的结果建立感到困惑。
谢谢大家:)
该函数正在执行检查,然后调用自身。当它再次调用自己时,它会传入计算结果。
因此,每次调用factorialize(num - 1);
时,num
将是上一次调用的结果,计算将从该值中删除 1 并将该新值传入。
步骤是这样的:
- 初始调用是
factorialize(5)
,它调用参数为 5 的函数。 - 该函数检查
5
是否小于 3(不是),如果不是,则再次调用自身。这次的参数是原始参数减去 1 - 所以4
- 下一次,它将检查 4 是否小于 3。如果没有,请再次调用自己 4 减 1 -
3
- 这一直持续到传入的参数小于 3
相关文章:
- 你能解释一下这个阶乘函数是如何工作的吗?
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- iPad虚拟键盘-哪一个-javasctript解决方案
- AJAX HTTP基本身份验证解决方案
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Chart.js-添加渐变而不是纯色-实现解决方案
- learnyounode杂耍异步解决方案不工作
- 计算阶乘超过了Javascript中的最大整数限制
- 了解因子分解解决方案
- 提交表单后的最佳解决方案
- 计时器在使用 jQuery 一分钟后没有触发,或者每 1 分钟后给出一些其他解决方案来触发功能
- chrome中的意外全局变量有解决方案吗
- 更好的解决方案HTML元素幻灯片从右侧CSS转换
- 使用SeleniumWebdriver将文本复制到文件时出现编译错误的解决方案
- 如何让我的网站上的WEBP图像加载在morzilla firefox中有一个可能的解决方案吗?如果是,那么如何
- JS驱动的常见问题页面的推荐DB解决方案
- 这里有一个更优雅的/DRY/可维护的JS解决方案
- 什么是农民最实用的解决方案;印刷动物”;
- 根据某些条件验证用户输入,而不是将输入输入到数组中,需要最基本的解决方案
- 递归函数 - 计数如何存储在此阶乘解决方案中