C++斐波那契数列前100项详细数据

调试中的f[][]一直是对的,但是不知道为什么显示的时候第5项就莫名其妙变成15而不是5,后面也开始不正确了。。。最让我费解的是为什么调试一直是正确的!!!求大神指示啊!... 调试中的f[][]一直是对的,但是不知道为什么显示的时候第5项就莫名其妙变成15而不是5,后面也开始不正确了。。。
最让我费解的是为什么调试一直是正确的!!!
求大神指示啊!!!!
悬赏20!!!
#include<iostream>
using namespace std;
void fi(int a[],int b[],int c[])
{
int tmp,i;
for(i=24;i>=0;i--)
{
tmp=0;
tmp=a[i]+b[i];
if(tmp>9)
{
c[i]=tmp-10;
a[i-1]++;
}
else
c[i]=tmp;
}
}
int main()
{
int f[200][25];
int i,j;
for(i=0;i<=199;i++)
for(j=0;j<=24;j++)
f[i][j]=0;
f[1][24]=1;
f[2][24]=1;
for(i=3;i<=101;i++)
fi(f[i-2],f[i-1],f[i]);
for(i=1;i<=100;i++){
for(j=0;j<=24;j++)
{
if(f[i][j]!=0)
for(;j<=24;j++)
cout<<f[i][j];
}
cout<<endl;
}
return 0;
}
展开
 我来答
当代教育科技知识库
高能答主

2019-11-14 · 擅长科技新能源相关技术,且研究历史文化。
当代教育科技知识库
采纳数:1829 获赞数:387310

向TA提问 私信TA
展开全部

f⑴=C(0,0)=1。

f⑵=C(1,0)=1。

f⑶=C(2,0)+C(1,1)=1+1=2。

f⑷=C(3,0)+C(2,1)=1+2=3。

f⑸=C(4,0)+C(3,1)+C(2,2)=1+3+1=5。

f⑹=C(5,0)+C(4,1)+C(3,2)=1+4+3=8。

f⑺=C(6,0)+C(5,1)+C(4,2)+C(3,3)=1+5+6+1=13。

……

f(n)=C(n-1,0)+C(n-2,1)+…+C(n-1-m,m) (m<=n-1-m)


扩展资料:

(1)有穷数列和无穷数列:

项数有限的数列为“有穷数列”(finite sequence);

项数无限的数列为“无穷数列”(infinite sequence)。

(2)对于正项数列:(数列的各项都是正数的为正项数列)

1)从第2项起,每一项都大于它的前一项的数列叫做递增数列;如:1,2,3,4,5,6,7;

2)从第2项起,每一项都小于它的前一项的数列叫做递减数列;如:8,7,6,5,4,3,2,1;

3)从第2项起,有些项大于它的前一项,有些项小于它的前一项的数列叫做摆动数列(摇摆数列);

(3)周期数列:各项呈周期性变化的数列叫做周期数列(如三角函数);

(4)常数数列:各项相等的数列叫做常数数列(如:2,2,2,2,2,2,2,2,2)。

参考资料来源:百度百科-斐波那契数列

1997排长
高粉答主

2016-01-10 · 说的都是干货,快来关注
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:780万
展开全部
因为f[100]是一个很大的数字,int根本就表示不下来,应该用大数的加法来做的
#include<stdio.h>
#include<string.h>
void sum(char a[],char b[])
{
int i,n,k;
for(i=strlen(b)-1,k=0;i>=0;k++,i--)
{
a[k]+=b[i]-'0';
n=k;
while(a[n]>'9')
{
a[n+1]+=(a[n]-'0')/10;
a[n]=(a[n]-'0')%10+'0';
n++;
}
}
}
int main()
{
char a[101],b[101],fib[500][201]={0},ch;
int i,j,k,c,n;
strcpy(fib[1],"1");
strcpy(fib[2],"2");
fib[0][0]='1';
for(i=1;i<101;i++)
fib[0][i]='0';
for(i=3;i<500;i++)
{
for(j=0;j<201;j++)
fib[i][j]='0';
}
for(i=3;;i++)
{
sum(fib[i],fib[i-1]);
sum(fib[i],fib[i-2]);
for(j=200;fib[i][j]=='0';j--);
fib[i][j+1]='\0';
for(k=0;k<=j;k++,j--)
{
ch=fib[i][k];
fib[i][k]=fib[i][j];
fib[i][j]=ch;
}
if(strlen(fib[i])>100||(strlen(fib[i])==101&&strcmp(fib[i],fib[0])>=0))
break;
}
n=i;
for(i=0;i<100;i++)
{
printf("fib[%d]=%s\n",i,fib[i]);
}
/*while(scanf("%s%s",a,b)!=EOF&&(strcmp(a,"0")!=0||strcmp(b,"0")!=0))
{
c=0;
for(i=1;i<=n;i++)
{
if(strcmp(fib[i],a)>=0&&strlen(fib[i])==strlen(a)||strlen(fib[i])>strlen(a))
if(strcmp(b,fib[i])>=0&&strlen(b)==strlen(fib[i])||strlen(b)>strlen(fib[i]))
c++;
}
printf("%d\n",c);
}*/
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
真梅嘉斯
推荐于2016-02-21 · TA获得超过145个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:89.4万
展开全部
#include<iostream>
#include<cstring>
using namespace std;
const int LEN = 150;
void fi(int a[],int b[],int c[])
{
    for(int i=LEN-1; i>=1; i--)
    {
        c[i - 1] = (a[i] + b[i] + c[i]) / 10;
        c[i] = (a[i] + b[i] + c[i]) % 10;
    }
}
int main()
{
    int f[200][LEN]; memset(f, 0, sizeof f);

    f[1][LEN-1]=f[2][LEN-1]=1;

    for(int i=3; i<=100; i++) fi(f[i-2],f[i-1],f[i]);

    for(int i=1; i<=100; i++)
    {
        for(int j=0; j<LEN; j++)
        {
            if(f[i][j]!=0) for(; j<LEN; j++) cout<<f[i][j];
        }
        cout<<endl;
    }
    return 0;
}
追问
大哥,你的代码很高级,能详解释下fi函数吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunzhenwei114
2015-11-11 · 知道合伙人教育行家
sunzhenwei114
知道合伙人教育行家
采纳数:776 获赞数:6174
毕业于阜新矿业学院基础部数学师范专业,擅长初高中数学教学,熟练操作excel,信息技术与数学整合是特长。

向TA提问 私信TA
展开全部
斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(1)=1,F(2)=1、F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
斐波那契数列的发明者,是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci),生于公元1170年,卒于1250年,籍贯是比萨。他被人称作“比萨的列昂纳多”。1202年,他撰写了《算盘全书》(Liber Abacci)一书。他是第一个研究了印度和阿拉伯数学理论的欧洲人。他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个阿拉伯老师的指导下研究数学。他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯等地研究数学。
前100项数据为:
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
24157817
39088169
63245986
102334155
165580141
267914296
433494437
701408733
1134903170
1836311903
2971215073
4807526976
7778742049
12586269025
20365011074
32951280099
53316291173
86267571272
1.39584E+11
2.25851E+11
3.65435E+11
5.91287E+11
9.56722E+11
1.54801E+12
2.50473E+12
4.05274E+12
6.55747E+12
1.06102E+13
1.71677E+13
2.77779E+13
4.49456E+13
7.27235E+13
1.17669E+14
1.90392E+14
3.08062E+14
4.98454E+14
8.06516E+14
1.30497E+15
2.11149E+15
3.41645E+15
5.52794E+15
8.94439E+15
1.44723E+16
2.34167E+16
3.78891E+16
6.13058E+16
9.91949E+16
1.60501E+17
2.59695E+17
4.20196E+17
6.79892E+17
1.10009E+18
1.77998E+18
2.88007E+18
4.66005E+18
7.54011E+18
1.22002E+19
1.97403E+19
3.19404E+19
5.16807E+19
8.36211E+19
1.35302E+20
2.18923E+20
3.54225E+20
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宿啥品8397
2015-04-07 · TA获得超过4528个赞
知道大有可为答主
回答量:3273
采纳率:60%
帮助的人:1789万
展开全部
为什么要用二维数组?而且int整形你的数据早就溢出了!
追问
哪里溢出了?
你调试看一下数值都是对的,但就是显示不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式