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, время: 20:21. |