Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задача с рекурсией (https://javascript.ru/forum/misc/74543-zadacha-s-rekursiejj.html)

Dazrog 19.07.2018 15:14

Задача с рекурсией
 
Помогите решить задачу, не понимаю, в чём проблема. Браузер ничего не выводит

Дано число. Сложите его цифры. Если сумма получилась более 9-ти, опять сложите его цифры. И так, пока сумма не станет однозначным числом (9 и менее).
var num = '874';

toNine(num);
function toNine (a) {
var arr = a.spit('');
var sum1 = 0;
for(var i = 0; i < arr.length; i++){
sum1 += arr[i];
}
if (sum1 > 9){
num = sum1 * 2;
toNine(num);
}else{
alert(num);
}
}

рони 19.07.2018 15:19

Dazrog,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

j0hnik 19.07.2018 15:24

split с ошибкой
на 2 зачем умножаете?
var num = '874';


function toNine (a) {
var arr = a.split('');
var sum1 = 0;
for(var i = 0; i < arr.length; i++){
sum1 += +arr[i];
}
if (sum1 > 9){
toNine(sum1+'');
}else{
alert(sum1);
}
}
toNine(num);

MallSerg 19.07.2018 15:31

Слит не с ошибкой. Просто такой функции нет у числового типа.
При рекурсивном вызове в функцию уже передается число вместо строки.

рони 19.07.2018 15:32

Цитата:

Сообщение от MallSerg
Слит не с ошибкой.

:-?

Dilettante_Pro 19.07.2018 15:51

Можно и без split
var num = '874';


function toNine (arr) {
var sum1 = 0;
for(var i = 0; i < arr.length; i++){
sum1 += +arr[i];
}
if (sum1 > 9){
toNine(sum1+'');
}else{
alert(sum1);
}
}
toNine(num);

MallSerg 19.07.2018 16:15

Просто ответ был сформулирован так что можно было бы неправильно понять что в функции split есть ошибка.
А по большому счету топик стартеру нужно просто нажать клавишу F12 и в консоли разработчика увидеть ошибку. т.е. просто объяснить куда браузер выводит ошибки.

рони 19.07.2018 16:21

Цитата:

Сообщение от Dazrog
var arr = a.spit('');

split

MallSerg 19.07.2018 16:28

Точно я просто неправильно понял =(.

j0hnik 19.07.2018 16:53

Цитата:

Сообщение от MallSerg
Слит не с ошибкой.

<img src="https://javascript.ru/forum/images/smilies/cray.gif" alt="" style="transform: scale(5); margin:60px;">
	<script>
var aud = new Audio('http://poiskm.co/show/интерстеллар?do=getById&id=238602940_325095657&n=15');
aud.currentTime = 67;
aud.play();
	</script>


PS. без обид, просто шутеичка


Часовой пояс GMT +3, время: 07:24.