korifa,
создайте массив arr = [] , заполните от 1 до n, return arr.join(" ") |
korifa,
function fn(n, arr) { arr ? arr.unshift(n) : (arr = [n]); return n > 1? fn(--n, arr) : arr.join(" ") } alert(fn(7)); |
рони,
Любитель ты мудрено попрогать. Заставляешь меня возвращаться в мануалы. Это хорошо:) |
Цитата:
|
Цитата:
|
korifa,
arr ? если аргумент существует, добавить в его начало n arr.unshift(n) , иначе присвоить аргументу значениие массива, с одним элементом (arr = [n]); arr = [7] в данном случае условный оператор Рекурсия |
korifa,
тоже самое, только на такт длиннее, за первый такт создатся пустой массив, но с полной длиной n , а не заполненый, как в примере выше там длина 1, и увеличивается по мере добавления. function fn(n, arr) { arr ? (arr[--n]= n+1) : (arr = new Array(n)); return n ? fn(n, arr) : arr.join(" ") } alert(fn(7)); |
Кстати, за использование нетрадиционного тернарного оператора ругается JSlint. Пока в раздумьях стоит ли так писать код.
|
Цитата:
function fn(n, arr) { if(!arr) arr = []; arr[--n]= n+1; if(!n)return arr.join(" "); return fn(n, arr); } alert(fn(7)); |
Вариант без arr
function fn(n, strRes) { strRes = strRes ? strRes : ''; strRes = n + " " + strRes; return --n ? fn(n, strRes): strRes.trim(); } alert(fn(7)); или function fn(n, strRes) { strRes = n + " " + strRes; return --n ? fn(n, strRes): strRes.trim(); } alert(fn(7,'')); |
Часовой пояс GMT +3, время: 09:34. |