我正在编写一个 C 程序来计算 Pascular Triangle 中的第 (i,j) 个元素,即 f(n,1) = f(n,n) = n 和 f(n,k) = f(n-1,k ) + f(n-1,k-1) for 1 < k < n 我需要打印模 1000000007 的值。代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
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)错误来了
DummyProject.exe 中 0x003C3D79 处的未处理异常:0xC00000FD:堆栈溢出(参数:0x00000001、0x003D2F70)。
任何帮助表示赞赏。