#include <stdio.h>
//循环的方法求出第n个斐波那契数
//1 1 2 3 5 8 13 21 34 55
//求第3个数也就是求2,需要进行一次运算
//求第4个数的时候需要运算两次
//求第五个数的时候要运算3次。
//所以求第n个数的时候,要运算n-2次
int Fib(int n)
{
int a = 1;
int b = 1;
int c = 0;
//n=1或者n=2的时候,可以不进入循环,n是3的时候大于2,就进去运算
while (n > 2)//仅仅只有当n>2的时候我们才进行计算
{
c = a + b;
a = b;
b = c;
n--;//当n是3的时候—1就是2,就不满足循环的条件
}//当n是4的=时候,c=1+1=2,然后b就变成下一个运算中的a了,
//第一个运算的c也变成第二个运算中的b了,然后第四个要求的数就是c了,
//第一次运算的时候运行了一次n--.所以变成了3,在第二次运行的时候再次
//运行就变成2了,就停止循环了
return c;
//当n=1时,不执行循环,直接返回c
//当n=2时,不执行循环,直接返回c
}
int main()
{
int n = 0;
scanf_s("%d", &n);
int r = Fib(n);
printf("%d", r);
return 0;
}
//循环迭代---求第n个斐波那契数
int fib(int n)
{
if (n <= 2)
{
return 1;
}
int a = 0,b=1,c;
for (int i = 2; i <= n; i++)
{
c = a + b;// 计算新的斐波那契数,即当前的 a 和 b 之和
//下面的两步是将斐波那契数列不断向后面推进
a = b;// 将 b 的值赋给 a,此时 a 存储 F(n-1)
b = c;// 将新计算的 c 值赋给 b,此时 b 存储 F(n)
}
return b; //此时 b 存储 F(n)
}
int main()
{
int n;
scanf("%d", &n);
int ret = fib(n);
printf("%d", ret);
return 0;
}
C语言---循环迭代的方式求第n个斐波那契数
最新推荐文章于 2024-05-23 00:22:50 发布