2017-07-16 5 views
1

変換が

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

が私を助けてくださいJavaScriptのRecursiveinするには、あなたの応答のためのありがとう...私は、コードを持っている、しかし、私は、再帰的untukこのコードを作りたいが、私はこだわっています

+2

それは...もう再帰的です。 あなたは 'add()'関数の中で 'add(b)'を呼び出す方法を見ていますか?それは再帰です。 – Swapnull

+0

これは、関数のadd(num){num.toString()に還元することができます* reduce((total、curr)=>数値(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

あなたのコードについていくつか説明してください。 –