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

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

反轉數字的遞歸函數

反轉數字的遞歸函數

蕭十郎 2023-03-03 09:51:19
我嘗試使用遞歸函數來反轉它有效的數字,但對于一個調用來說,我猜只是因為作用域,但我不知道如何修復它let num;let reversed='';let result; function reverseNum(n){    for(let i =0; i<n; i++){      num = n%10; // get the last digit e.g 352 %10 = 2    reversed+= num    result = parseInt(n / 10); // remove last digit e.g. parseInt(352/10) = 35    reverseNum(result);    if(result ===0){         break;    }   }  return reversed;}
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

每次從外部調用函數時,您都需要重新創建num、reversed和變量。result這是一個簡單的調整,通過在 top 函數中定義遞歸函數reverseNum:


function reverseNum(n) {

  let num;

  let reversed = '';

  let result;

  const recurse = (n) => {

    for (let i = 0; i < n; i++) {

      num = n % 10; // get the last digit e.g 352 %10 = 2

      reversed += num

      result = parseInt(n / 10); // remove last digit e.g. parseInt(352/10) = 35

      recurse(result);

      if (result === 0) {

        break;

      }

    }

    return reversed;

  };

  return recurse(n);

}


console.log(reverseNum(1234));

console.log(reverseNum(1234));

但更優雅的方法是:


function reverseNum(n, str = String(n)) {

  const thisDigit = str[str.length - 1];

  const recursiveResult = str.length === 1 ? '' : reverseNum(str.slice(0, str.length - 1));

  return Number(thisDigit + recursiveResult);

}


console.log(reverseNum(1234));

console.log(reverseNum(1234));


查看完整回答
反對 回復 2023-03-03
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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