gpt4 book ai didi

javascript - For循环影响递归变量

转载 作者:行者123 更新时间:2023-12-03 07:12:51 25 4
gpt4 key购买 nike

我正在尝试使用递归来创建一个函数,该函数可以从帕斯卡三 Angular 形内的任何序列中获取任何项。基本上使用自然数作为第一组的加法序列,然后使用前面的每个集合作为加法序列,总是从 1 开始。 Simplex Numbers

我目前正在学习 JavaScript,并且正在做我已经知道在 Python 中可行的事情来测试 JavaScript 中的一些基本原理。然而 for 循环似乎总是跳过一些数字。我相信正在发生的事情是,当函数调用自身并再次运行 for 循环时,它会影响更高一级函数中的变量 I,导致它跳过序列中的一个数字。我不知道如何避免这种情况,因为 JavaScript 允许在同一范围内的函数中使用变量,这是有道理的,但我不知道如何避免这种情况。

 var simplex = function(s,t){
if (s == 1){
return t
} else{
var n=1;
for (i = 1; i<t; i++){
n += simplex(s-1,t+1);
}
return n
}

}

console.log(simplex(3,3))

最佳答案

如果您没有为 i 声明范围,它最终会在递归调用中持续存在。您应该始终在必要的范围内声明这些内容。

这是一个清理后的版本:

function simplex(s,t){
if (s == 1){
return t
}

let n = 1;

for (let i = 1; i < t; i++){
n += simplex(s-1, t+1);
}

return n;
}

console.log(simplex(3,3));

由于现在是 2020 年,letconst 得到广泛支持,因此建议优先使用具有不同作用域的旧 var 样式考虑因素。 let 范围更窄,更符合预期。

作为一种习惯,您应该努力以以下形式编写循环:

for (let i = 0; ...)

let 明显存在的地方。这清楚地表明迭代变量仅与该 for 循环相关。

关于javascript - For循环影响递归变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64164703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com