为了账号安全,请及时绑定邮箱和手机立即绑定

递归函数,通过从n减去2直到n = 0或1来确定数字是偶数还是奇数

递归函数,通过从n减去2直到n = 0或1来确定数字是偶数还是奇数

慕森王 2021-05-14 18:12:15
零是偶数。一个很奇怪。对于任何其他数字N,其均匀度与N-2相同。定义一个与该描述相对应的递归函数isEven。该函数应接受单个参数(正整数)并返回布尔值。这是我对isEven的实现:let isEven = function(n){    even = 0;    odd = 1;    if(n == even){      return true;    }    else if (n == odd) {      return false;    }    else{      n -= 2;      console.log(n); //Used to see value of n through each call      isEven(n);    }  };当我调用此函数时,它返回 undefined  document.write(isEven(50)); //prints `undefined`来自的输出console.log(n)如下:Failed to load resource: net::ERR_FILE_NOT_FOUND4846...0我不知道为什么Failed to load resource: net::ERR_FILE_NOT_FOUND是第一输出,但在此之后n被击中0,那么为什么if(n == even){          return true;        }?  没有执行?
查看完整描述

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

  )


查看完整回答
反对 回复 2021-05-27
?
慕尼黑8549860

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));


查看完整回答
反对 回复 2021-05-27
  • 2 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信