Почему я получаю ошибку переполнения стека в рекурсивной программе C при вычислении элементов треугольника Паскаля?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему я получаю ошибку переполнения стека в рекурсивной программе C при вычислении элементов треугольника Паскаля?

Сообщение Anonymous »

Я пишу программу на C для вычисления (i,j)-го элемента в паскулярном треугольнике
т.е. f(n,1) = f(n,n) = n и f(n,k) = f(n-1,k) + f(n-1,k-1) для 1 < k < n
Мне нужно напечатать значение по модулю 1000000007.
Следующий код :

Код: Выделить всё

#include 
#include 
#include 

unsigned long int returnModPascal(unsigned long int n,unsigned long int k);

int main()
{
int t;
unsigned long int ans,n,k;
scanf("%d",&t);
while(t--)
{
scanf("%lu %lu",&n,&k);
ans=returnModPascal(n,k);
printf("%lu",ans);
}

return 0;
}

unsigned long int returnModPascal(unsigned long int n,unsigned long int k)
{
unsigned long int tempans,tempans1,tempans2;
if(k==1 || k==n)
tempans=n;
else
{
tempans1=returnModPascal(n-1,k);
if (tempans1>=1000000007)
tempans1=tempans1%1000000007;
tempans2=returnModPascal(n-1,k-1);
if (tempans2>=1000000007)
tempans2=tempans2%1000000007;
if (tempans1+tempans2>=1000000007)
tempans=tempans1+tempans2-1000000007;
else
tempans=tempans1+tempans2;
}

return tempans;
}
Когда я ввожу, например, 123456 3 как n & k
( Он отлично работает с меньшими целочисленными значениями, такими как 23 2 или 12 3 как n&k )
Появляется ошибка


Необработанное исключение по адресу 0x003C3D79 в DummyProject.exe: 0xC00000FD:
Стек переполнение (параметры: 0x00000001, 0x003D2F70).


Любая помощь приветствуется.

Подробнее здесь: https://stackoverflow.com/questions/190 ... puting-ele
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Функционал C++23 при вычислении строк в треугольнике Паскаля
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Функционал C++23 при вычислении строк в треугольнике Паскаля
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как использовать символическую регрессию для аппроксимации треугольника Паскаля?
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Кто -нибудь может объяснить мне, почему я получаю ошибку переполнения стека?
    Anonymous » » в форуме JAVA
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Кто -нибудь может объяснить мне, почему я получаю ошибку переполнения стека?
    Anonymous » » в форуме JAVA
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»