亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遞歸函數,通過從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 關注
  • 264 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號