为什么在论证部分是发生乘法(递归)
Why in argument section is happen multiplication(recursion)?
为什么在参数部分是发生乘法,在else语句中?
function main(x, y) {
if (y === 0) {
return 1;
} else {
return x * main(x, y - 1); // Why in argument section is happen multiplication
}
}
main(2, 3);
这是一个递归函数,如果不检查y==0,函数将永远不会停止。
现在它是这样计算的
2 * (2 * (2 * (2 * 1)))
其中y是
3 2 1 0
我认为这段代码做的是Math.pow()
函数所做的(以不同的方式)。第一个论点是基础,第二个论点是力量。这里的main(x, y)
将x
提升为y
的幂,这可以通过将x
、y
相乘来实现。
我会尝试在每次通过时扩展它:-
-
main(2,3);返回2*main(2,2);
-
main(2,2);返回2*main(2,1);
-
main(2,1);返回2*main(2,0);
- main(2,0)返回1
使用(1)中的(2)、(3)、(4),我们得到:
2*2*2*1;
因为这就是计算指数的方法。
相关文章:
- 数组在递归方法中设置为null
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 递归使用 eval() 是检查程序执行的好方法吗?
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- 递归深度比较
- Eloquent JavaScript递归示例如何终止为返回1,但仍然输出指数值
- 递归函数中断
- 如何递归地获取嵌套对象中所有子对象的列表
- JavaScript 素数搜索无限递归
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- 递归|两个函数名
- 有没有一种方法可以在Javascript中进行可变递归currying
- 如何对不同的表递归使用以下代码
- 将jQuery对象传递到setTimeout递归函数中
- 有更好的方法吗?(递归解析HTML unicode实体)
- 为什么递归生成器函数没有't在ES2015工作
- 使用递归实现加性持久性
- 递归显示n元树
- 无递归的异步循环
- php中的脚本重定向是递归的