Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему не работает? (https://javascript.ru/forum/misc/70356-pochemu-ne-rabotaet.html)

рони 04.09.2017 18:18

korifa,
создайте массив arr = [] , заполните от 1 до n, return arr.join(" ")

рони 04.09.2017 19:44

korifa,
function fn(n, arr)
   {
     arr ? arr.unshift(n) : (arr = [n]);
     return n > 1?  fn(--n, arr) : arr.join(" ")
   }
   alert(fn(7));

Rasy 04.09.2017 20:24

рони,
Любитель ты мудрено попрогать. Заставляешь меня возвращаться в мануалы. Это хорошо:)

korifa 05.09.2017 09:05

Цитата:

Сообщение от рони (Сообщение 463686)
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

Цитата:

Сообщение от korifa (Сообщение 463708)
если не сложно бьясните 3 строчку

конец 3 строчки

рони 05.09.2017 10:12

korifa,
arr ? если аргумент существует, добавить в его начало n arr.unshift(n) , иначе присвоить аргументу значениие массива, с одним элементом (arr = [n]); arr = [7] в данном случае

условный оператор
Рекурсия

рони 05.09.2017 10:22

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));

Rasy 05.09.2017 12:43

Кстати, за использование нетрадиционного тернарного оператора ругается JSlint. Пока в раздумьях стоит ли так писать код.

рони 05.09.2017 13:33

Цитата:

Сообщение от Rasy
стоит ли так писать код

не вижу препятствий, но если хочется без ?.
function fn(n, arr)
   {
     if(!arr) arr = [];
     arr[--n]= n+1;
     if(!n)return arr.join(" ");
     return fn(n, arr);
   }
   alert(fn(7));

Dilettante_Pro 05.09.2017 14:19

Вариант без 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.