Странное поведение рекурсии
День добрый, следующая функция должна умножать цифры в числе num, если после перемножения цифр число все еще содержит более одной цифры, повторять действие. Переменная res должна показывать сколько раз функция вызывала сама себя. Не могли бы вы пояснить почему переменная res уменьшается после первого самовызова функции.
function persistence(num,res) { var N = String(num); var sum = 1; for(var i = 0; i<N.length; i++){ sum = sum * Number(N.charAt(i)); if(String(sum).length != 1) { res++; persistence(sum,res); } } console.log(res); return res; } a = persistence(39,0); |
Цитата:
function persistence(num,res) { var N = String(num); var sum = 1; alert('start '+N); for(var i = 0; i<N.length; i++){ sum = sum * Number(N.charAt(i)); if(String(sum).length != 1) { res++; alert('for '+res); persistence(sum,res); } } alert('return '+res+' num= '+num); return res; } a = persistence(39,0); Она не "уменьшается", она именно этому равна в самой первой итерации. Если ты хочешь иметь некий счетчик, то это делается не так. :no: |
rexrjd, как вариант...
function persistence(num,res) { var N = String(num); var sum = 1; alert(++res+'. start '+N); for(var i = 0; i<N.length; i++) { sum = sum * Number(N.charAt(i)); }; if (String(sum).length != 1) { res=persistence(sum,res); }; return res; }; a = persistence(39,0); alert(a); |
Часовой пояс GMT +3, время: 03:49. |