2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Ошибка «Maximum call stack size exceeded»
Сообщение16.07.2018, 09:30 
Аватара пользователя


01/12/11

8634
Пишу процедуру, вычисляющую факториал заданной кратности (кажется, его называют мультифакториал или кратный факториал) для натурального числа (например, тройной факториал числа 16):

Используется синтаксис Javascript
function mulfac(num, mul) { // Процедура получает число и кратность нужного факториала.
  if (num <= mul)
    return num;
return mulfac(num-mul)*num;
}

console.log(mulfac(8, 1)); // В данном случае вычисляется обычный (одинарный) факториал числа 8.
 


И вот компайлер выдаёт мне ошибку: Maximum call stack size exceeded.
Что я опять делаю не так?

 Профиль  
                  
 
 Re: Ошибка «Maximum call stack size exceeded»
Сообщение16.07.2018, 10:00 
Заслуженный участник


16/02/13
4111
Владивосток
Ktina в сообщении #1326995 писал(а):
mulfac(num-mul)
Вот поэтому

 Профиль  
                  
 
 Re: Ошибка «Maximum call stack size exceeded»
Сообщение16.07.2018, 11:15 


05/09/12
2587
Ktina в сообщении #1326995 писал(а):
И вот компайлер
Я бы сказал, рантаймер.
Ktina в сообщении #1326995 писал(а):
Что я опять делаю не так?
А все так. Это норма (С)

 Профиль  
                  
 
 Re: Ошибка «Maximum call stack size exceeded»
Сообщение16.07.2018, 11:25 
Заслуженный участник
Аватара пользователя


01/08/06
3053
Уфа
Ktina в сообщении #1326995 писал(а):
Что я опять делаю не так?
Вы забываете, что у функции mulfac два параметра, и передаёте ей один. Заботливый интерпретатор додумывает за вас, что второе значение — undefined (обожаю такие заботливые языки!), дальше вступают в действия правила работы с этим undefined, которые ничего хорошего не сулят.

 Профиль  
                  
 
 Re: Ошибка «Maximum call stack size exceeded»
Сообщение16.07.2018, 11:27 


10/04/12
704
Почему не добавить console.log("" + num + ", " + mul) первой строкой? Несколько первых строк вывода

Используется синтаксис Text
8, 1
7, undefined
NaN, undefined
NaN, undefined
NaN, undefined
NaN, undefined


ответят на вопрос.

 Профиль  
                  
 
 Re: Ошибка «Maximum call stack size exceeded»
Сообщение16.07.2018, 11:30 


05/09/12
2587
Или взять более другой язык, признав, наконец, ошибку выбора, а не оправдывать ее тьюринг-полнотой

 Профиль  
                  
 
 Re: Ошибка «Maximum call stack size exceeded»
Сообщение16.07.2018, 19:46 
Аватара пользователя


01/12/11

8634
worm2 в сообщении #1327018 писал(а):
Вы забываете, что у функции mulfac два параметра, и передаёте ей один.

Вот из-за подобной рассеянности мне и тогда, в 2002г., так и не удалось научиться программировать :cry: Но на этот раз я не сдамся.

 Профиль  
                  
 
 Re: Ошибка «Maximum call stack size exceeded»
Сообщение16.07.2018, 22:18 
Аватара пользователя


01/12/11

8634
Да, и спасибо всем, конечно!

-- 16.07.2018, 22:25 --

И перепишу-ка я, на всякий случай, эту процедуру, дабы правильно было:

Используется синтаксис Javascript
function mulfac(num, mul) { // Процедура получает число и кратность нужного факториала.
  if (num <= mul)
    return num;
return mulfac(num-mul, mul)*num;
}

console.log(mulfac(69, 7)); // В данном случае вычисляется семерной факториал числа 69. Ух ты, работает!
 

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group