C语言,fibonacci的code,小菜我完全看不懂。

#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;。