2017-07-16 28 views
1

轉換Recursivein的JavaScript

function add(num) { 
 
var a = num.toString().split('') 
 
var b = 0; 
 
for(i=0;i<a.length;i++){ 
 
    b += Number(a[i]) 
 
} 
 
    if(b.toString().split('').length == 1){ 
 
    return b 
 
    } 
 
    else{return add(b)} 
 
} 
 
document.write(add(73)+'<br>'); //7+3=10 | 1+0=1 
 
document.write(add(9980)); //9+9+8+0=26 | 2+6=8

請幫助我,我有一個代碼,但我想進行遞歸untuk這個代碼,但我堅持...感謝的爲您迴應

+2

這......已經是遞歸的。 你看到你如何在'add'函數內調用'add(b)'?這是遞歸。 – Swapnull

+0

這可能會減少到功能add(num){num.toString()。reduce((total,curr)=> Number(total)+ Number(curr))}' –

+0

感謝您的意見,我只是認爲,遞歸是沒有循環'for'或'while'...我新的JavaScript的 – Momogi

回答

1

雖然您已經有了遞歸,但您可以使用Array#reduce來合計數字並檢查值而不是調用遞歸的字符串。

function add(num) { 
 
    var s = num.toString().split('').reduce(function (a, b) { return a + +b; }, 0); 
 
    return s > 9 ? add(s) : s; 
 
} 
 

 
console.log(add(73)); 
 
console.log(add(9980));

-1

function add(num) { 
 
    if(num < 10) { 
 
    return num; 
 
    } 
 
    var sum = 0; 
 
    while(num !== 0) { 
 
    sum += (num%10); 
 
    num = parseInt(num/10); 
 
    } 
 
    return add(sum); 
 
} 
 
document.write(add(73)+'<br>'); //7+3=10 | 1+0=1 
 
document.write(add(9980)); //9+9+8+0=26 | 2+6=8

+1

你應該提供一些你的代碼的解釋。 –