请c语言高手给我讲解一下这个题我
Fibonacci数列定义为
F[0]=1,F[1]=1;F[n] = F[n-1]+F[n-2];
下面我来解释一下
这两段程序都是求数列的前n项的值,相对于定义,第二段程序好理解一些
main()
{
int i;
static int f[20]={1,1}; //用来保存数列数据,F[0]=1,F[1]=1
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1]; //求F[2]到F[19]的值
for(i=0;i<20;i++) //下面是显示部分
{
if(i%5==0)printf("\n"); ...全部
Fibonacci数列定义为
F[0]=1,F[1]=1;F[n] = F[n-1]+F[n-2];
下面我来解释一下
这两段程序都是求数列的前n项的值,相对于定义,第二段程序好理解一些
main()
{
int i;
static int f[20]={1,1}; //用来保存数列数据,F[0]=1,F[1]=1
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1]; //求F[2]到F[19]的值
for(i=0;i<20;i++) //下面是显示部分
{
if(i%5==0)printf("\n"); //每5个元素换行
printf("%12d",f[i]); //第个元素显示12个字符宽
}
}
运行结果是:
(空行)
1 1 2 3 5
。
。。。。。。。。。省略了,共4行,20个数
下面看看第一段程序,其中用到了
f1=f1+f2;
意思是将当前f1的值加f2的值,结果放到f1变量中,若运算前f1=1,f2=1,则运算后f1=2。
下面我们分析程序
main()
{
long int f1,f2; //声明变量,用来临时保存数列的数据
int i;
f1=1;f2=1; //数列的F[0],F[1]初值
for(i=1;i<=20;i++)
{
printf("%12ld %12ld ",f1,f2); //显示临时保存的数列数据
if(i%2==0)printf("\n"); //每显示两次换行
f1=f1+f2; //求下一个数据保存到f1中
f2=f2+f1; //求再下一个数据保存到f2中
}
}
由于循环了20次,每次求得并显示两个数据,共计算了40个数据,显示了38个
1 1
2 3 5 8
。
。。。。。。。。。。。。。。。。。。。。。。省略了
还有一个问题,就是用一维数组的知识编译的这个程序,还是关于Fibonacci数列的,也看不怎么懂,希望高手给解释
。
收起