Вывод кол-ва цифр в переменной
Версия с двумя папаметрами функции работает как надо, но необходимо
чтобы параметр в функции был один. Работает НЕ корректно. В чем причина, как исправить? function num(n) { var x = 0; if (n>=0 && n<=9) {return x+1;} res=num(n / 10, x+1); return res; } alert( num(223) ); |
helpmepls,
function num(n) { return (n+"").length } alert( num(223) ); |
Может ТС имел в виду такое:
var x = 0; function num(n) { if (n >= 0 && n <= 9) return x++; return num(n / 10, x++); } alert(num(223)); |
Очередная задача из горе-учебника на применение рекурсии там, где ее применять не следует?
helpmepls, Вы, при рекурсивном вызове передаете два параметра, а используется только один, как оно может работать "правильно"? Также не понятно, вы хотите чтобы можно было передавать отрицательные числа? Если да, вы подумали как будет функция работать в этом случае? Бесконечная рекурсия не получится? А если нет, зачем проверка n >= 0 ? Вот вам в том же духе (т.е. с теми же недочетами): function num(n) { return ( n >= 0 && n < 10 ) ? 1 : num(n/10)+1; } |
Цитата:
Я правильно понимаю, что return (n+"").lengthпреобразует переменную n в строковой тип и позволяет применять к ней свойство length? |
Цитата:
|
Цитата:
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. Что я упустил? |
Дзен-трансгуманист,
Если используется replace для удаления точки, то почему бы заодно не удалить и знак, чтобы сэкономить на вызове abs? return isFinite( number ) ? ( number+'' ).replace( /[.-]/g, '' ).length : 0; helpmepls, Конкретизируйте задачу, во-первых, правильно ли я предположил, что по условию требуется написать именно рекурсивную функцию? Во-вторых, числа только целые, или могут быть и дробные? Если второе, то нужно кол-во цифр только в целой части или и в целой и в дробной? |
Часовой пояс GMT +3, время: 17:10. |