Показать сообщение отдельно
  #7 (permalink)  
Старый 25.03.2013, 23:43
Аватар для helpmepls
Интересующийся
Отправить личное сообщение для helpmepls Посмотреть профиль Найти все сообщения от helpmepls
 
Регистрация: 01.03.2013
Сообщений: 12

Сообщение от 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.
Что я упустил?
Ответить с цитированием