首页 青云排行榜 知识中心 控制台

下面函数执行的时间复杂度是多少?(     )

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

O(2^n)

O(1)

O(2^n-1) + O(2^n-2)

这是台阶问题的实现逻辑,
一个子问题时间 = F(n-1)+ F(n-2),也就是一个加法的操作,所以复杂度是 O(1);
问题个数 = 递归树节点的总数,递归树的总节点 = 2^n-1, 所以是复杂度O(2^n)。
所以递归实现方式的时间复杂度 = O(1) * O(2^n) = O(2^n),指数级别的,存在性能问题。
关于我们
公司简介
联系我们
联系我们
售前咨询: leizhongnan@eval100.com
售后服务: 0755-26415932
商务合作: support@eval100.com
友情链接
金蝶软件
快递100
关注我们
Copyright © 2023-2023 深圳慧题科技有限公司 粤ICP备2023109746号-1 粤公网安备44030002001082