Сообщение от rgl
|
Очередная задача из горе-учебника на применение рекурсии там, где ее применять не следует?
helpmepls,
Вы, при рекурсивном вызове передаете два параметра, а используется только один, как оно может работать "правильно"?
Также не понятно, вы хотите чтобы можно было передавать отрицательные числа? Если да, вы подумали как будет функция работать в этом случае? Бесконечная рекурсия не получится? А если нет, зачем проверка n >= 0 ?
Вот вам в том же духе (т.е. с теми же недочетами):
function num(n)
{
return ( n >= 0 && n < 10 ) ? 1 : num(n/10)+1;
}
|
Благодарю за ответ.
1. Правильно ли я понял, что чтобы включить возможно обработки отрицательных чисел, в условии должно быть n >= -10 && n < 10 ?
2. Подскажите, почему в Вашем коде если alert(num(10)); то понятно что num(10/10)+1; = 2, но например при alert(num(11)); если не использовать команд для округления числа, num(11/10)+1; = 2,1 (при -11 = 2,2).
У Вас же команд для округления не используется, но почему то получается все верно, 2.
Что я упустил?