为什么我的c运行速度这么慢?

为什么我的c运行速度这么慢?

黑框出现后 先缓上好几秒才会出现字然后执行,执行速度肯定不用讲,毋庸置疑,就是黑框出现后半天啥字也没有!

后台也没有任何的杀毒软件之类的

 title=


 title=


image.png

#include <iostream>

int fibonacci(int n) {
    if (n <= 0) {
        return 0;
    } else if (n == 1) {
        return 1;
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}

int main() {
    int numTerms;
    std::cout << "请输入斐波那契数列的项数:";
    std::cin >> numTerms;

    std::cout << "斐波那契数列的前 " << numTerms << " 项为:";
    for (int i = 0; i < numTerms; ++i) {
        std::cout << fibonacci(i) << " ";
    }
    std::cout << std::endl;

    return 0;
}
阅读 3.4k
1 个回答

这位同学深夜还在学习辛苦了,根据你修改的问题,原回答已删除,我看了下你的代码,运行速度慢的问题可能是由于递归计算斐波那契数列造成的。递归方式在计算较大的斐波那契数时会存在大量重复计算,导致效率低下,也就是经常听过的算法时间度的问题。我这个代码其实是搬运的你的,在你的基础上做了一小点优化(优化部分我加了注释,希望这样更清晰点)

#include <iostream>

long long fibonacci(int n) {
    if (n <= 0) {
        return 0;
    } else if (n == 1) {
        return 1;
    } else {
        // 初始化前两个斐波那契数
        long long prev = 0; // 前一个数
        long long curr = 1; // 当前数

        for (int i = 2; i <= n; ++i) {
            // 计算当前数并更新前一个数和当前数
            long long temp = curr;
            curr += prev;
            prev = temp;
        }
        
        return curr; // 返回当前数作为计算结果
    }
}

int main() {
    int numTerms;
    std::cout << "请输入斐波那契数列的项数:";
    std::cin >> numTerms;

    std::cout << "斐波那契数列的前 " << numTerms << " 项为:";
    for (int i = 0; i < numTerms; ++i) {
        std::cout << fibonacci(i) << " "; // 调用函数计算并输出每一项的斐波那契数值
    }
    std::cout << std::endl;

    return 0;
}

简单来说,用了一个循环来计算斐波那契数列,避免了递归中的重复计算,从而提高了程序的执行效率。你可以尝试运行修改后的代码,看看是否能够改善运行速度。我这边运行效率正常,你这边试试那?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题