2 回答

TA貢獻1752條經驗 獲得超4個贊
但是不要錯過學習相互遞歸的機會!
const isEven = (n = 0) =>
n === 0
? true
: isOdd (n - 1)
const isOdd = (n = 0) =>
n === 0
? false
: isEven (n - 1)
console .log
( isEven (0) // true
, isEven (1) // false
, isEven (2) // true
, isEven (3) // false
, isEven (99) // false
)
console .log
( isOdd (0) // false
, isOdd (1) // true
, isOdd (2) // false
, isOdd (3) // true
, isOdd (99) // true
)

TA貢獻1818條經驗 獲得超11個贊
您需要從遞歸調用中返回結果。
let isEven = function(n){
const // declare local variables/constants
even = 0,
odd = 1;
if(n == even){
return true;
}
else if (n == odd) {
return false;
}
else{
//n -= 2; no need to reassign a value for a single use
return isEven(n - 2); // return here
}
};
console.log(isEven(50));
console.log(isEven(21));
沒有else
零件的更好的樣式,因為如果以前返回,則不需要這樣做。
直接使用值,如果僅使用一次,
使用嚴格的比較(Identity / strict相等運算符
===
),因為不嚴格會導致錯誤的假設直接對參數進行計算,而無需將值重新分配給不再使用的變量
let isEven = function(n){
if (n === 0) return true;
if (n === 1) return false;
return isEven(n - 2);
};
console.log(isEven(50));
console.log(isEven(21));
添加回答
舉報