Implementation of Euclidean GCF results in "Range Error: Maximum call stack size exceeded."
Implementation of Euclidean GCF results in "Range Error: Maximum call stack size exceeded."
我正在努力了解三元运算符,所以我想我会举一个我最近遇到并喜欢的例子,并尝试将其重构为更基本(尽管冗长)的表示法。然而,我的实现抛出了一个错误,而我试图重建的三元版本工作得很好。
用于计算两个数的 GCF 的欧几里德算法的三元版本:
function gcd(a, b) {
return !b ? a : gcd(b, a % b);
}
我尝试实现它
function gcf2(a, b) {
if(b !== a){
gcf2(b, a % b);
}
else {
g = b;
}
}
我已经阅读了三元运算符的 MDN 描述,但很明显我还没有从结果中理解它。
将三元转换为 if else 语句的方法是这样的:
function gcd2(a, b) {
if (!b) {
return a;
}
else {
return gcd2(b, a % b);
}
}
三元基本就是说"If b is falsy, return a. Else return gcd(b, a % b)"
我正在努力了解三元运算符,所以我想我会举一个我最近遇到并喜欢的例子,并尝试将其重构为更基本(尽管冗长)的表示法。然而,我的实现抛出了一个错误,而我试图重建的三元版本工作得很好。
用于计算两个数的 GCF 的欧几里德算法的三元版本:
function gcd(a, b) {
return !b ? a : gcd(b, a % b);
}
我尝试实现它
function gcf2(a, b) {
if(b !== a){
gcf2(b, a % b);
}
else {
g = b;
}
}
我已经阅读了三元运算符的 MDN 描述,但很明显我还没有从结果中理解它。
将三元转换为 if else 语句的方法是这样的:
function gcd2(a, b) {
if (!b) {
return a;
}
else {
return gcd2(b, a % b);
}
}
三元基本就是说"If b is falsy, return a. Else return gcd(b, a % b)"