题解 | 牛牛学数列5

牛牛学数列5

https://www.nowcoder.com/practice/6db6674518a9456198c166bcd0d2aaa1

#include <iostream>
// 移除无用头文件 linux/limits.h(代码中未使用)
using namespace std;

// 斐波那契计算函数:n≥1返回对应值,n≤0返回-1(标记非法输入)
int feibonaqi(int n) {
    // 处理非法输入:n≤0,覆盖所有控制路径,避免编译错误
    if (n <= 0) {
        return -1;
    }
    // 前两项:n=1、n=2,直接返回1(合并n<3分支,简化代码)
    if (n < 3) {
        return 1;
    }
    // 初始化前两项:先赋值再计算,避免未定义行为
    int f1 = 1, f2 = 1, result;
    // 循环迭代:从第3项到第n项,推导每一项的值
    // 循环次数 = n-2(前两项已确定,无需循环)
    for (int i = 3; i <= n; i++) {
        result = f1 + f2;  // 当前项 = 前两项之和
        f1 = f2;           // 前一项后移:原f2变为新f1
        f2 = result;       // 当前项后移:原result变为新f2
    }
    // 循环结束,result即为第n项,返回结果(覆盖所有路径)
    return result;
}

int main() {
    int n;
    cin >> n;

    int res = feibonaqi(n);
    // 判读是否为非法输入
    if (res == -1) {
        cout << "错误:输入的n必须是正整数!" << endl;
        return 1; // 非0退出,标记程序异常
    }
    // 输出正确结果
    cout << res << endl;

    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务