斐波那契数

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 01 开始,后面的每一项数字都是前面两项数字的和。也就是:

复制代码
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1

给定 n ,请计算 F(n)

cpp 复制代码
// 计算斐波那契数列的第n项
int fib(int n) {
    // 边界条件:当n为0或1时,直接返回n(斐波那契数列定义)
    if(n < 2)
        return n;
    
    // 初始化循环变量i,从2开始(因为n=0和n=1已直接处理)
    int i = 2;
    // 初始化前两项的值:
    // a表示第i-2项,初始为fib(0) = 0
    // b表示第i-1项,初始为fib(1) = 1
    int a = 0, b = 1;
    
    // 循环计算从第2项到第n项的斐波那契数
    // 循环条件:当i小于等于n时继续(i < n + 1等价于i <= n)
    while(i < n + 1) {
        // 计算当前项:第i项 = 第i-2项 + 第i-1项
        int c = a + b;
        // 更新前两项:a变为原来的第i-1项(为下一轮计算做准备)
        a = b;
        // 更新前两项:b变为当前计算出的第i项(为下一轮计算做准备)
        b = c;
        // 循环变量自增,确保能计算到第n项
        i++;
    }
    
    // 循环结束后,b中存储的就是第n项的斐波那契数
    return b;
}
相关推荐
YuTaoShao32 分钟前
【LeetCode 每日一题】2221. 数组的三角和
数据结构·算法·leetcode
little~钰1 小时前
树上倍增和LCA算法---上
算法
力扣蓝精灵1 小时前
今日分享 整数二分
算法
mc23561 小时前
5分钟学会微算法——Brian Kernighan 算法
算法
Excuse_lighttime1 小时前
除自身以外数组的乘积
java·数据结构·算法·leetcode·eclipse·动态规划
万添裁1 小时前
归并排序的三重境界
数据结构·算法
程序员三明治1 小时前
【重学数据结构】队列 Queue
数据结构·后端·算法
Coision.1 小时前
Linux C: 函数
java·c语言·算法
杜小暑1 小时前
数据结构之双向链表
c语言·数据结构·后端·算法·链表·动态内存管理
AndrewHZ1 小时前
【3D图像技术讨论】3A游戏场景重建实战指南:从数据采集到实时渲染的开源方案
人工智能·算法·游戏·3d·开源·llm·colmap