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
4214
Владивосток
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
3151
Уфа
Ktina в сообщении #1326995 писал(а):
Что я опять делаю не так?
Вы забываете, что у функции mulfac два параметра, и передаёте ей один. Заботливый интерпретатор додумывает за вас, что второе значение — undefined (обожаю такие заботливые языки!), дальше вступают в действия правила работы с этим undefined, которые ничего хорошего не сулят.

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


10/04/12
706
Почему не добавить 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, Супермодераторы



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

Сейчас этот форум просматривают: granit201z


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

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