这是我写的用于计算GCD的递归代码:
function gcd(n1, n2) {
if(n1<n2) {
return gcd(n1, n2-n1);
}
else if(n2<n1) {
return gcd(n1-n2,n2);
}
else{
return n1;
}
}
console.log(gcd(process.argv[2], process.argv[3]));
它给了我一个范围错误。知道为什么吗? :(
编辑:
我删除了标准输入并用随机数替换它,它运行正常。
我想知道为什么它第一次不起作用......
答案 0 :(得分:0)
始终知道或检查您尝试访问其索引的数组的大小。如果你得到一个范围错误,那么这意味着数组不是你想象的大小,所以第一步就是弄清楚为什么你的期望与现实不符。
答案 1 :(得分:0)
试试这个:
function gcd(n1, n2) {
if(n1<n2) {
return gcd(n1, n2-n1);
}
else if(n2<n1) {
return gcd(n1-n2,n2);
}
else{
return n1;
}
}
console.log(gcd(parseInt(process.argv[2]), parseInt(process.argv[3])));
我认为JavaScript的类型强制导致了问题。使用原始版本,我可以使它得到一个调用堆栈溢出错误,如下所示:
node gcd.js 3 11