Всем привет. Начал постигать примудрости джс.
На практике столкнулся с таким вот примером вычисления експоненты:
function exp(a, b) {
if (b === 0) {
return 1;
}
return a*exp(a, b-1);
}
Скрипт разобрал, понял
Хотя вначале были сложностит с понимаем схемы, когда функция возвращает сама себя.
Попробовал переделать через обычный цикл, чтобы "закрепить", так сказать
и наткнулся на проблемы.
function exp(a, b) {
if (b === 0) {
return 1;
}
for (b; b < 1; b--) {
a = a*a;
}
return a;
}
Этот вариант всегда возвращет значение a, кроме когда b === 0.
То есть проверка первая работает, а вот в цикле какой-то сбой.
Чуток помучившись, все же получил результат.
function exp(a, b) {
if (b === 0) {
return 1;
}
do {
a = a*a;
b--;
} while (b > 1);
return a;
}
Но почему этот вариант работает, а предыдущий нет, так и не понял. Буду благодарен за объяснения.