Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 04.09.2017, 18:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,114

korifa,
создайте массив arr = [] , заполните от 1 до n, return arr.join(" ")
Ответить с цитированием
  #12 (permalink)  
Старый 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));
Ответить с цитированием
  #13 (permalink)  
Старый 04.09.2017, 20:24
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

рони,
Любитель ты мудрено попрогать. Заставляешь меня возвращаться в мануалы. Это хорошо
Ответить с цитированием
  #14 (permalink)  
Старый 05.09.2017, 09:05
Новичок на форуме
Отправить личное сообщение для korifa Посмотреть профиль Найти все сообщения от korifa
 
Регистрация: 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. Причина: поторопился
Ответить с цитированием
  #15 (permalink)  
Старый 05.09.2017, 10:02
Новичок на форуме
Отправить личное сообщение для korifa Посмотреть профиль Найти все сообщения от korifa
 
Регистрация: 30.08.2017
Сообщений: 8

Сообщение от korifa Посмотреть сообщение
если не сложно бьясните 3 строчку
конец 3 строчки
Ответить с цитированием
  #16 (permalink)  
Старый 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.
Ответить с цитированием
  #17 (permalink)  
Старый 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.
Ответить с цитированием
  #18 (permalink)  
Старый 05.09.2017, 12:43
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Кстати, за использование нетрадиционного тернарного оператора ругается JSlint. Пока в раздумьях стоит ли так писать код.
Ответить с цитированием
  #19 (permalink)  
Старый 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));
Ответить с цитированием
  #20 (permalink)  
Старый 05.09.2017, 14:19
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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,''));
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает? Rora Общие вопросы Javascript 7 10.05.2017 10:09
cookie почему не работает скрипт Alven Общие вопросы Javascript 1 01.09.2013 03:17
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 12:41
Помогите с javascript (Почему не работает) remus Оффтопик 9 09.06.2010 11:18
Почему не работает функция? Vitaly jQuery 10 31.07.2009 17:01