作者thnestar (峰)
看板C_and_CPP
标题[问题] 计算 (x+1)^n 的问题
时间Sat Dec 5 22:04:28 2009
( *[1m *[m 为色码,可以按 Ctrl+V 预览会显示的颜色 )
( 未必需要依照此格式,文章条理清楚即可 )
遇到的问题: 我希望能做个程式跑出 (x+1)^n 的各项系数,
但是当我输入的 n 值从13开始以後就会出错。
希望得到的正确结果:能够顺利跑出各项系数
程式跑出来的错误结果:n值从13开始出错
开发平台: Dev-C++
有问题的code:
#include <stdio.h>
#include <stdlib.h>
void binary(int);
int C(int,int);
int main(int argc, char *argv[])
{
int n;
printf("求二项式 (x+1)^n 的系数\n");
start:
printf("请输入 n = ");
scanf(" %d",&n);
if(n==-1)
{
putchar('\n');
goto end;
}
else
{
printf("(x+1)^%d 的二项式系数是 :\n",n);
binary(n);
putchar('\n');
goto start;
}
end:
system("PAUSE");
return 0;
}
void binary(int n)
{
int i,q,r;
q=n;
r=n;
for(i=0;i<=n;i++)
{
printf("系数%d : %d\n",i,C(q,r));
r=r-1;
}
}
int C(int m,int n)
{
int p=m-n,sum_1=1,sum_2=1,sum_3=1,ans;
for(m=m;m>0;m--)
{
sum_1=sum_1*m;
}
for(p=p;p>0;p--)
{
sum_2=sum_2*p;
}
for(n=n;n>0;n--)
{
sum_3=sum_3*n;
}
ans=(sum_1)/(sum_2*sum_3);
return ans;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.222.65
1F:→ Ducray:爆掉了 12/05 22:05
2F:推 cismjmgoshr:13! > 2^31 int溢位 12/05 22:34
3F:→ netsphere:不就巴斯卡三角形 就DP做很简单 12/05 22:43
4F:推 DJWS:int型态的变数最大只能到2的31次方减一 12/06 16:21
5F:→ DJWS:若在计算过程中超过此限制,就无法预测接下来会发生什麽事了 12/06 16:24