C语言---循环迭代的方式求第n个斐波那契数

简介: C语言---循环迭代的方式求第n个斐波那契数
#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;
}
相关文章
|
10天前
|
C语言
【C语言】循环语句
C语言中循环语句的相关知识点
17 2
【C语言】循环语句
|
22天前
|
C语言
C语言循环与分支
C语言循环与分支
23 5
|
20天前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
11天前
|
Linux C语言
【编程小实验】C语言实现:无限循环写入文本文件,支持Ctrl+C中断与数据追加(附完整源码)
在Linux中,文件I/O(输入/输出)是程序与文件进行交互的基本方式,包括读取文件内容和向文件写入数据。这通常通过标准的C库函数来实现,下面是一些基本的文件读写操作和代码示例。
|
18天前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
20 0
|
24天前
|
C语言
C语言---正方形图案--循环
C语言---正方形图案--循环
13 0
|
24天前
|
C语言
C语言----循环---n的k次方
C语言----循环---n的k次方
10 0
|
24天前
|
C语言
C语言---循环迭代---n的阶乘
C语言---循环迭代---n的阶乘
18 0
|
C语言 SDN
《C语言及程序设计》程序阅读——用循环累加
返回:贺老师课程教学链接  写出下面程序运行的结果。(1) #include &lt;stdio.h&gt; int main( ) { int i,m=1; for(i=5; i&gt;=1; i--) { m=(m+1)*2; printf("m=%d\n",m); } return 0; } (2)#include
780 0
|
C语言
《C语言及程序设计》实践项目——用循环累加
返回:贺老师课程教学链接  【项目1:分数的累加】编程序,输出1/3-3/5+5/7-7/9…+19/21的结果提示:如果直接解决上面的问题有困难,可以设计一条“由易到难”的路线,逐渐解决其中要解决的问题,让自己的思路明朗起来。(1)1+2+...+20  ——这个应该会(2)1+1/2+1/3+…+1/20  ——分数的累加,注意两个整型相除,商也为整型,而显然求和结果应该是小数(3)1/2
972 0