04.09.2017, 18:18
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,114
|
|
korifa,
создайте массив arr = [] , заполните от 1 до n, return arr.join(" ")
|
|
04.09.2017, 19:44
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,114
|
|
korifa,
function fn(n, arr)
{
arr ? arr.unshift(n) : (arr = [n]);
return n > 1? fn(--n, arr) : arr.join(" ")
}
alert(fn(7));
|
|
04.09.2017, 20:24
|
Профессор
|
|
Регистрация: 17.06.2016
Сообщений: 509
|
|
рони,
Любитель ты мудрено попрогать. Заставляешь меня возвращаться в мануалы. Это хорошо
|
|
05.09.2017, 09:05
|
Новичок на форуме
|
|
Регистрация: 30.08.2017
Сообщений: 8
|
|
Сообщение от рони
|
korifa,
function fn(n, arr)
{
arr ? arr.unshift(n) : (arr = [n]);
return n > 1? fn(--n, arr) : arr.join(" ")
}
alert(fn(7));
|
если не сложно бьясните 3 строчку
Последний раз редактировалось korifa, 05.09.2017 в 10:02.
Причина: поторопился
|
|
05.09.2017, 10:02
|
Новичок на форуме
|
|
Регистрация: 30.08.2017
Сообщений: 8
|
|
Сообщение от korifa
|
если не сложно бьясните 3 строчку
|
конец 3 строчки
|
|
05.09.2017, 10:12
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,114
|
|
korifa,
arr ? если аргумент существует, добавить в его начало n arr.unshift(n) , иначе присвоить аргументу значениие массива, с одним элементом (arr = [n]); arr = [7] в данном случае
условный оператор
Рекурсия
Последний раз редактировалось рони, 05.09.2017 в 10:14.
|
|
05.09.2017, 10:22
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,114
|
|
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));
Последний раз редактировалось рони, 05.09.2017 в 10:28.
|
|
05.09.2017, 12:43
|
Профессор
|
|
Регистрация: 17.06.2016
Сообщений: 509
|
|
Кстати, за использование нетрадиционного тернарного оператора ругается JSlint. Пока в раздумьях стоит ли так писать код.
|
|
05.09.2017, 13:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,114
|
|
Сообщение от Rasy
|
стоит ли так писать код
|
не вижу препятствий, но если хочется без ?.
function fn(n, arr)
{
if(!arr) arr = [];
arr[--n]= n+1;
if(!n)return arr.join(" ");
return fn(n, arr);
}
alert(fn(7));
|
|
05.09.2017, 14:19
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Вариант без 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,''));
|
|
|
|