C语言.求斐波那契数#include#includeint f[500][150],s[500];//s表示位数int main(){int i,j=0,t;f[1][0]=1;f[2][0]=2;s[1]=1;s[2]=1;for(i=0;i
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 17:56:26
C语言.求斐波那契数#include#includeint f[500][150],s[500];//s表示位数int main(){int i,j=0,t;f[1][0]=1;f[2][0]=2;s[1]=1;s[2]=1;for(i=0;i
C语言.求斐波那契数
#include
#include
int f[500][150],s[500];//s表示位数
int main()
{
int i,j=0,t;
f[1][0]=1;f[2][0]=2;
s[1]=1;s[2]=1;
for(i=0;i
C语言.求斐波那契数#include#includeint f[500][150],s[500];//s表示位数int main(){int i,j=0,t;f[1][0]=1;f[2][0]=2;s[1]=1;s[2]=1;for(i=0;i
for(i=0;i<500;i++)
for(j=0;j<150;j++)
f[i][j]=0;
你这里把f[1] f[2]都清0了,所以f[3]等于0.把这段代码移到前面去.
另外
for(j=0,t=0;;j++)
{f[i][j]=f[i-1][j]+f[i-2][j]+t;
if(f[i][j]>=10) {t=f[i][j]/10;f[i][j]=f[i][j]%10;}//f[i][j]大于10,进位
if(t==0&&f[i-1][j]==0) break;//没有可以进的位 且上一个数是0
这里循环结束的条件不对,f[i-1]中间某一位也可能为0,如果碰巧没有进位的话你到这里就提前终止循环了
for (j=0, t=0; j<s[i-1]; j++) {f[i][j] = f[i-1][j] + f[i-2][j] + t;
if (f[i][j] >= 10) { t=f[i][j]/10; f[i][j] = f[i][j] % 10; }
}
s[i] = s[i-1];
if (t) {
f[i][s[i-1]] = t;
s[i]++;
}