2016-02-28 2 views
1

Я хочу сделать программу с JavaScript, который не добавляет цифры номера, пока количество цифр в результате равен 1.сумма цифр числа

Пример:

57 = 5 + 7 = 12 = 1 + 2 = 3. 

У меня есть сделал программу, которая выполняет половину работы. Это

<!DOCTYPE html> 
<html> 

<head> 
    <title>Try</title> 
    <style type="text/css"> 

    </style> 
</head> 

<body> 
    <form><input type="text" onkeyup="sumofDigits(this.value)"></input> 
    </form> 
    <h1></h1> 
    <script type="text/javascript"> 
     function sumofDigits(number) { 
      var num = number.toString(); 
      var sum = 0; 

      for (var i = 0; i < num.length; i++) { 
       sum += parseInt(num.charAt(i), 10); 
      } 

      document.querySelector('h1').innerHTML = sum; 
     } 
    </script> 
</body> 

</html> 
+1

_digits ряда и затем цифры результата, пока количество цифр результата не 1_? Не удалось прочитать .. – Rayon

+0

Задать вопрос сейчас –

ответ

4

Там нет необходимости строковых функций здесь. Вы можете просто прийти результат с помощью мод (% операции.

function sumDigits(number) { 
     document.querySelector('h1').innerHTML = ((number-1)%9+1); 
} 
+1

Остерегайтесь угловых шкафов: Решение для 999 должно быть 999 → 27 → 9. Решение для 0 должно быть 0. –

+0

вы можете использовать ** ((номер-1)% 9 + 1) ** istead, чтобы избежать таких случаев. Проверьте исправленный. –

+0

Отличный трюк! – kfx

2

Это делается.

function sumDigits(number) { 
    var num = number.toString(); 

    while (num.length != 1) { 
     var sum = 0; 
     for (var i = 0; i < num.length; i++) { 
      sum += parseInt(num.charAt(i), 10); 
     } 
     num = sum.toString(); 
     document.querySelector('h1').innerHTML = sum; 
    } 
} 
0
function sumDigits(number) { 
    var str = number.toString(); 
    var sum = 0; 

    for (var i = 0; i < str.length; i++) { 
     sum += parseInt(str.charAt(i), 10); 
    } 

    if (sum > 9) 
     sumDigits(sum); 
     else   
     document.querySelector('h1').innerHTML = sum; 

} 
0

Попробуйте

<script type="text/javascript"> 
    function sumDigits(number) { 
     while(number > 9){ 
      var num = number.toString(); 
      var sum = 0; 
      for (var i = 0; i < num.length; i++) { 
       sum += parseInt(num.charAt(i), 10); 
      } 
      number = sum; 
     } 
     document.querySelector('h1').innerHTML = sum; 
    } 
</script> 
Смежные вопросы