Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.06.2024, 18:38
Аватар для deniscikasov@gmail.com
Аспирант
Отправить личное сообщение для deniscikasov@gmail.com Посмотреть профиль Найти все сообщения от deniscikasov@gmail.com
 
Регистрация: 14.03.2023
Сообщений: 76

Рекурсивные вызовы
Прохожу на FreeCodeCamp рекурсию
Шаг 71 - https://www.freecodecamp.org/learn/j...verter/step-71
Вот интересующая функция
const decimalToBinary = (input) => {
  if (input === 0) {
    return "";
  } else {
    return decimalToBinary(Math.floor(input / 2)) + (input % 2);
  }
};

Если мы напишем в input 10, то как я понял:
10/2 = 5
5/2 = 2
2/2 = 1
1/2 = 0
input === 0 и мы возвращаем пустую строку
А далее мы начинаем объединять вызовы и тут я не понимаю, вот что мне ответила нейросеть:
decimalToBinary(1) ВОЗВРАТ decimalToBinary(0) + (1 % 2) = "" + 1 = "1"
decimalToBinary(2) ВОЗВРАТ decimalToBinary(1) + (2 % 2) = "1" + 0 = "10"
decimalToBinary(5) ВОЗВРАТ decimalToBinary(2) + (5 % 2) = "10" + 1 = "101"
decimalToBinary(10) ВОЗВРАТ decimalToBinary(5) + (10 % 2) = "101" + 0 = "1010"
Пока не понимаю как тут логика строится, может помочь кто нибудь

Последний раз редактировалось deniscikasov@gmail.com, 21.06.2024 в 19:02.
Ответить с цитированием
  #2 (permalink)  
Старый 21.06.2024, 19:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,555

deniscikasov@gmail.com, нейросеть тебе ответила бесполезно, потому что это лог после вызова а не до.

Мб так будет понятней:
НАЧАЛО decimalToBinary(10) 
  НАЧАЛО decimalToBinary(5)
    НАЧАЛО decimalToBinary(2) 
      НАЧАЛО decimalToBinary(1) 
        НАЧАЛО decimalToBinary(0) 
        КОНЕЦ decimalToBinary(0) ВОЗВРАТ ""
      КОНЕЦ decimalToBinary(1) ВОЗВРАТ decimalToBinary(0) + (1 % 2) = "" + 1 = "1"
    КОНЕЦ decimalToBinary(2) ВОЗВРАТ decimalToBinary(1) + (2 % 2) = "1" + 0 = "10"
  КОНЕЦ decimalToBinary(5) ВОЗВРАТ decimalToBinary(2) + (5 % 2) = "10" + 1 = "101"
КОНЕЦ decimalToBinary(10) ВОЗВРАТ decimalToBinary(5) + (10 % 2) = "101" + 0 = "1010"
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 21.06.2024, 19:22
Аватар для deniscikasov@gmail.com
Аспирант
Отправить личное сообщение для deniscikasov@gmail.com Посмотреть профиль Найти все сообщения от deniscikasov@gmail.com
 
Регистрация: 14.03.2023
Сообщений: 76

Мы выходим из стека начиная с 0, где 0/2 === ' ' и 0%2 === ' '
потом 1/2 === 0 это пустая строка и 1%2 это 1: итог 1
далее 2/2 === 1 и 2%2 === 0: итог 1 + 0 = 10
далее 5/2 ===2 и 5%2 === 1: итог 2 + 1 = 21 (проблема)
далее 10/2 === 0 и 10%2 === 0: итог 0 + 0 = 0
Кажется я понял, тут первая часть выражения уже не действительна, и мы только вторую задействуем. Я понял, спасибо, кажется понял

Последний раз редактировалось deniscikasov@gmail.com, 21.06.2024 в 19:35.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызовы функций atanov Javascript под браузер 2 21.06.2019 17:40
Последовательные вызовы aleman Общие вопросы Javascript 6 19.02.2012 18:10
Убрать из кода вызовы FireBug Shasoft Общие вопросы Javascript 4 25.08.2009 16:46
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53