Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2017, 17:54   #11
gryllus
Пользователь
 
Регистрация: 27.08.2017
Сообщений: 99
По умолчанию

Спасибо! Побольше бы таких не бездушных людей как вы!
Обалдеть, я и не подумал бы, что ищет наибольшее число среди переданных.

Код:
function myFunc(a, b) {
    alert(a * 42 - b);
}

  myFunc(2, 4);
Здесь мне всё ясно, это я сразу понял, что на экран выведется число 80. Когда есть циклы с if и else if тоже вроде более или менее понятно, но когда дело доходит до результата(я уже это писал как-то)
Код:
const sequenceSum = (begin, end) => {
   if (begin === end){
   return begin;
 } else if (begin > end){
   return NaN;
 } else{ 
  begin + sequenceSum(begin + 1, end);
  }
};

sequenceSum(1, 5);
Что произойдёт здесь, мне не понятно,
Код:
begin + sequenceSum(begin + 1, end)
нет что произойдёт сложение между
Код:
begin + sequenceSum
, а вот какое значение будет у sequenceSum, опять же понятно, что в скобках произойдёт сложение begin с единицей и в данном примере будет 5, и end 5. Если не рассматривать данный пример - как рекурсию, тоже будет наибольшее число выбирать в скобках???
Код:
sequenceSum(begin + 1, end)
будь одно из чисел в результате в скобках отличное от 5, ну предположим 7.

"Есть люди, жаждущие бессмертия, но не знающие, что будут делать, если в воскресенье пойдёт дождь."
Бенни Хилл

Последний раз редактировалось gryllus; 10.10.2017 в 17:58. Причина: Был пропущен знак препинания
gryllus вне форума Ответить с цитированием
Старый 10.10.2017, 18:14   #12
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну рекурсию всем сложно понять пока не понял рекурсию )

Почему наибольшее? Наибольшее было в моем примере с функцией названной max (обычно подобное так называется везде, и min для наименьшего), то есть внутри бы она проверяла значения параметров с помощью if'ов и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2017, 19:27   #13
gryllus
Пользователь
 
Регистрация: 27.08.2017
Сообщений: 99
По умолчанию

Цитата:
Почему наибольшее? Наибольшее было в моем примере с функцией названной max
... я потом уже понял))).

Я кажется понял
Код:
sequenceSum(begin + 1, end)
функция принимает два параметра begin + 1 и end, но опять же непонятно как будет происходить сложение
Код:
begin + sequenceSum(begin + 1, end)
, ведь у нас sequenceSum принимает два значения или будет, что-то другое?
gryllus вне форума Ответить с цитированием
Старый 10.10.2017, 20:02   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от gryllus Посмотреть сообщение
функция принимает два параметра begin + 1 и end, но опять же непонятно как будет происходить сложение
Цитата:
Сообщение от gryllus Посмотреть сообщение
ведь у нас sequenceSum принимает два значения
И? Чем это мешает?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2017, 20:23   #15
gryllus
Пользователь
 
Регистрация: 27.08.2017
Сообщений: 99
По умолчанию

Цитата:
И? Чем это мешает?
Цитата:
функция принимает два параметра begin + 1 и end, но опять же непонятно как будет происходить сложение
...наверно я что-то не правильно спросил. Здесь как раз всё понятно. Не понятно вот здесь:
Код:
begin + sequenceSum(begin + 1, end)
, не сложение в скобках, а сложение
Код:
begin + sequenceSum
, ведь у sequenceSum два аргумента. Вот, что я имел ввиду.

Ничто так ни ранит человека, как осколки собственного счастья.
gryllus вне форума Ответить с цитированием
Старый 10.10.2017, 20:26   #16
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так и чем мешает количество аргументов? Возвращаемое значение-то всегда одно (return).
Как и в примере с max или myFunc2.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2017, 21:43   #17
gryllus
Пользователь
 
Регистрация: 27.08.2017
Сообщений: 99
По умолчанию

Цитата:
Возвращаемое значение-то всегда одно (return).
Спасибо огромное!

Уже понятней становится, сколько я прочитал, нигде этого не нашёл, именно про то, что аргументов может быть несколько, а retun вернёт одно значение.

Значит в моём случае
Код:
const sequenceSum = (begin, end) => {
   if (begin === end){
   return begin;
 } else if (begin > end){
   return NaN;
 } else{ 
  begin + sequenceSum(begin + 1, end);
  }
};

sequenceSum(1, 5);
return, вернёт единицу, так как второй return в else if ни когда не выполнится??? Значит получается, что значение sequenceSum, равно единице?
В общем опять вынос мозга у меня, что происходит в последнем else, если в первом else false, во втором else false, то в третьем
Код:
else{ 
  begin + sequenceSum(begin + 1, end);
} будет два аргумента, да ещё и математические действия будут происходить. Зачем тут нужен begin + ведь вычисления в процессе происходят в sequenceSum(begin + 1, end) , а значение нам вернёт как я понимаю первый returnкак только его условие будет true. Что-то нееее то??? Обалдеть.


Код:
var year = prompt('В каком году появилась спецификация ECMA-262 5.1?', '');

if (year < 2011) {
  alert( 'Это слишком рано..' );
} else if (year > 2011) {
  alert( 'Это поздновато..' );
} else {
  alert( 'Да, точно в этом году!' );
}
вот здесь мне понятно абсолютно всё!

"Трудно быть порядочным когда денег нет!"

Последний раз редактировалось gryllus; 10.10.2017 в 21:47.
gryllus вне форума Ответить с цитированием
Старый 10.10.2017, 21:55   #18
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Я ж говорил уже про это.

Второй return (с NaN) тут просто на случай изначально некорректного (непредусмотренного) ввода типа sequenceSum(5, 1). Зачем ему выполняться?

И в последнем else ошибка, return пропущен.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2017, 22:04   #19
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вот кстати неплохое приложение для пошаговой визуализации кода, может поможет:
https://goo.gl/o47aMc
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2017, 22:18   #20
gryllus
Пользователь
 
Регистрация: 27.08.2017
Сообщений: 99
По умолчанию

Код:
И в последнем else ошибка, return пропущен.
Спасибо!

...но мне кажется ни чего не должно поменяться
Код:
return begin + sequenceSum(begin + 1, end);
здесь будет только сложение происходить begin + 1 и снова в if уйдёт 2, затем 2 + 1 = 3 и так далее пока не выполнится условие в if и return вернёт 5, я правильно понимаю?
gryllus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базовые структуры c++ Анна Седакова Помощь студентам 0 24.12.2013 00:20
Абстрактные базовые классы Millashka Помощь студентам 0 21.11.2012 15:05
Базовые Протоколы smile_8 Помощь студентам 0 29.03.2012 21:53
Базовые понятия pavel.ignatenko Microsoft Office Excel 15 17.04.2011 01:06
Базовые классы в с++ Banner Помощь студентам 1 31.03.2011 23:43