Показать сообщение отдельно
  #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.
Ответить с цитированием