为什么用递归会崩溃?

采用递归方法在n较小时正常,在运行n=43时直接崩溃了
#include <iostream>

using namespace std;

int fibonacci(int n);

int main()
{
    int n;
    
    cin >> n;
    
    cout << fibonacci(n);
    
    return 0;
}

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


全部评论
你没有记忆化,所以应该是TLE
点赞 回复
分享
发布于 2019-11-01 09:49
不应该是爆栈了吗
点赞 回复
分享
发布于 2019-11-01 10:10
联易融
校招火热招聘中
官网直投
第43个斐波那契爆int了
点赞 回复
分享
发布于 2019-11-01 16:50
有可能是爆栈, 用纯递归求斐波那契数列,普通机器的临界点就在43左右,可以大致估算运算次数,一般机器1GHZ都差不多在这个位置卡住,这是因为递归示例太多,机器运算不过来,你所说的崩溃应该是操作系统作出的保护机制,你可以尝试用其他操作系统再试,应该不会崩溃,但是速度会很慢很慢
点赞 回复
分享
发布于 2019-11-01 16:54
忘了仔细看代码,3楼正解,需要用long long
点赞 回复
分享
发布于 2019-11-01 16:58

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务