5

この再帰呼び出しがどのように機能するかわかりません。再帰呼び出しで not 演算子を使用すると、この関数は、与えられた引数が奇数か偶数かを判断します。'!' fn(2) と fn(5) は両方とも true を返します。

この例は、JavaScript Allonge free e-bookから抜粋したもので、これまでのところ優れています。

var fn = function even(n) {
  if (n === 0) {
    return true;
}
  else return !even(n - 1);
}

fn(2); //=> true

fn(5); //=> false
4

3 に答える 3

7
  1. n === 0結果がtrue.
  2. n > 0の逆を返す場合n - 1。を返す
    場合、または. 、または、またはが返される 場合。、または、または、またはを返す 場合。 等々...n === 1!even(0)false
    n === 2!even(1)!!even(0)true
    n === 3!even(2)!!even(1)!!!even(0)false

一般に:

  • が偶数の場合n、結果は偶数回反転されます。つまり、 が返されtrueます。
  • が奇数の場合n、結果は奇数回反転されます。つまり、 が返されfalseます。
于 2013-11-10T21:06:40.873 に答える