#include<stdio.h>
int main (void)
{
int i,n;
int x, y, z;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
if (i == 1)
{
x = 1;
printf("%d ", x);
}
else if (i == 2)
{
y = 1;
printf("%d ", y);
}
else
{
z = x + y;
x = y;
y = z;
printf("%d ", z);
}
}
putchar('\n');
return 0;
}
有大佬给讲解下么,底部的 z=x+y,x=y,y=z.这什么逻辑,为什么这样写啊。看不懂。。。哪个大佬帮忙解惑下,谢谢。
首先你要明白什么是斐波拉契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
简单的讲,第一第二个数都是1,从第三个数开始,后续全部数字都是前两个数之和。
代码中x为第一个数,y为第二个数,因此,z = x + y。
然后,更新第一个数和第二个数,为后续新的斐波拉契数列做铺垫。
y是第二个数,将其赋值给x第一个数 x = y;,z是第三个数,将其赋值给y第二个数 y = z;。