我已经看了无数的例子,我不知道我一直做错了什么。我想做一个函数,打印一个10的乘法表(1x10到10x10),但我一直得到超过最大调用堆栈大小的错误,而其他人写的类似函数看起来一样运行没有问题。有人能帮助我吗?我发现递归真的很难理解。
'
recursionTable = (multiplier) => {
let num = 1;
if (num === 10) {
return "We've hit the end, my friends."
}
return (num + 1) * recursionTable(multiplier);
}
console.log(recursionTable(10));
'
期望通过递归得到一个10的乘法表(从1x10到10x10),但是在看了几个小时的例子之后,即使我模仿那些,似乎也没有什么效果。
4条答案
按热度按时间0h4hbjxa1#
您正在传递没有起始条件的乘数。下面的代码可以解决您的问题:
yqkkidmi2#
你的代码的问题是你在每次递归时都设置num = 1,为了防止这种情况,你应该像这样重构你的代码:
或者发送2个值作为函数中的参数
并将内部num值替换为initValue
hzbexzde3#
谢谢大家的帮助!我开始掌握它的窍门了。结果就像你们中的一些人指出的那样,我甚至没有包括递归的公式来做任何事情。现在它工作了,我已经读了一遍,它真的开始有意义了。再次感谢!
代码我最终使用:
kmpatx3s4#
试试这个: