За последние 24 часа нас посетили 22679 программистов и 1267 роботов. Сейчас ищет 751 программист ...

Рекурсия

Тема в разделе "JavaScript и AJAX", создана пользователем Anybodyhelpmeplz, 2 сен 2017.

Метки:
  1. Anybodyhelpmeplz

    Anybodyhelpmeplz Новичок

    С нами с:
    14 июл 2017
    Сообщения:
    7
    Симпатии:
    0
    Всё просто, скрип складывает сумму цифр, если она больше 9, то складывает заного. Всё работает до включения рекурсивной функции summaryOfNumbers(summary). Потанцевал с бубном, но ничего работать не стало. Подскажите?)

    HTML:
    1. <!DOCTYPE html>
    2. <html lang="en">
    3.     <meta charset="UTF-8">
    4.     <title>Title</title>
    5. </head>
    6.     var x = 1234
    7.     console.log(summaryOfNumbers(x))
    8.  
    9.     function summaryOfNumbers(num) {
    10.         var num = String(num)
    11.         var array = num.split('')
    12.         var summary = 0
    13.  
    14.         for (var i = 0; i < array.length; i++) {
    15.            summary += Number(array[i])
    16.        }
    17.  
    18.        if (summary <= 9) {
    19.            return summary
    20.        } else {
    21.            summaryOfNumbers(summary)
    22.        }
    23.    }
    24. </body>
    25. </html>
     
  2. t1grok

    t1grok Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    119
    Симпатии:
    32
    У рекурсивного вызова return не хватает.
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Автор, на будущее, не заигрывай с использованием разделителя строки вместо точки с запятой. Это грабельки, которые очень больно бьют по лбу.
     
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    А чё так тоже можно было? )))
    я всегда думал что это syntax error и накрытие всего js на странице )))
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Нет. И никогда им не было. Более того, есть отдельная каста яваскриптеров, больных точкасзапятоюфобией. Страшное заболевание, скажу я тебе. Они считают, что точка с запятой - это блажь для слабаков, программист должен ПРЕВОЗМОГАТЬ, а машины созданы для того, чтобы люди им служили. Эдакое сообщество элитных гемороеносцев. Вроде бы у всех геморрой, но вроде бы все им гордятся.

    Но на деле, нужно всегда помнить о том, что переносы в JS могут обрабатываться и как символ конца команды. Не везде их можно безболезненно ляпать.
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    @Fell-x27 в чем ошибка подхода без ';'?
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Это не ошибка, это усложнение себе жизни. Точка с запятой сразу в глаза бросается. Интерпретатору JS на нее мб и плевать в большинстве случаев, а вот разработчику она помогает. Чем меньше вероятность неопределенного поведения, чем выше удобство восприятия кода, тем быстрее идет работа, тем меньше багов.
     
  8. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    Я когда js изучал год и делал всё без точки с запятой, то потом с php замучился, не понятно из-за чего ошибка, если всё правильно.