2016-11-14 11 views
3

代入のために、N-2を使用して偶数または奇数の整数をチェックする再帰関数を書くことになっています。 trueの場合でもtrueを返した場合はfalseが返されます。しかし、値が自分自身を呼び出すのに十分な大きさであれば、それは未定義を返します。助けてください!単純な再帰的なJavascript関数は返されません

function isEven(num) { 
    console.log("top of function num = " + num);// For Debugging 
    if (num == 0){ 
     return true; 
    } 
    else if (num == 1){ 
     return false; 
    } 
    else { 
    num -= 2; 
    console.log("num = " + num); 
    isEven(num); 
    } 
} 
console.log(isEven(0)); 
// → true 
console.log(isEven(1)); 
// → false 
console.log(isEven(8)); 
// → ?? 

コンソールログの結果:

top of function num = 0 

true 

top of function num = 1 

false 

top of function num = 8 

num = 6 

top of function num = 6 

num = 4 

top of function num = 4 

num = 2 

top of function num = 2 

num = 0 

top of function num = 0 

undefined 
+1

は以下のスニペットを参照してください。 –

+0

elseは本当に値を返す必要があります! – Robba

+0

再帰関数を使う間違ったやり方を教えてくれる素晴らしい宿題。代わりにモジュラスを使用してください。 – Xorifelse

答えて

2

isEven(num); 

isEven(num)呼び出し。 isEven` `であなたの` else`ケースが値を返すことはありません

function isEven(num) { 
 
    //console.log("top of function num = " + num);// For Debugging 
 
    if (num == 0){ 
 
     return true; 
 
    } 
 
    else if (num == 1){ 
 
     return false; 
 
    } 
 
    else { 
 
    num -= 2; 
 
    return isEven(num); 
 
    } 
 
} 
 
console.log('0 is even: ', isEven(0)); 
 
// → true 
 
console.log('1 is even: ', isEven(1)); 
 
// → false 
 
console.log('8 is even: ', isEven(8));

+0

ああ、@cyber_rookieは私にそれを殴ったようだ。本当になぜ私たちが両方とも-1'dを得たのかわからない、私たちの答えは間違いない! – Robba

+0

ありがとうございます。出来た! –

+0

優秀!その答えを答えにするのがとても親切ですか? – Robba

0

あなたは次の行に変更することができます:あなたが再帰前return文を忘れてしまった

return isEven(num); 
関連する問題