首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归方法的Big-O和Big-Omega

递归方法的Big-O和Big-Omega
EN

Stack Overflow用户
提问于 2015-02-07 07:47:01
回答 1查看 415关注 0票数 1

我的任务是尝试找到给定Java方法的big-O和big-Omega,但不知道如何查找。我知道big-O给出了上界,big-Omega给出了下限,但是当我看一个程序时,我如何准确地弄清楚这一点,更不用说递归程序了?提前谢谢你,这对我的学习有很大的帮助。

代码语言:javascript
复制
public static boolean goal(int i, int n){
    if(n == 0){
        if( i == 91) {
            System.out.println("i = " + i +", DONE!!!");
            return true;
        }
        else {
            return false;
        }

    }
    else if(i % 2 == 1){
        if(goal(i + 53,n - 1))
        {
            System.out.println("i = "+ i + ", step # " + n);
            return true;
        }
        else
            return false;
    }
    else {
       if( goal(i + 53,n - 1) || goal(i / 2,n - 1))
       {
            System.out.println("i = "+ i +", step # " + n);
            return true;
       }
       else
            return false;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2015-02-07 07:58:37

每次递归迭代,当N减1时,递归停止,在最好的情况下,i总是奇数,所以你进入第一个分支,所以这个算法的下界是O(N)

上限是最坏的情况,是您的最后一个else分支,此时您可以调用goal两次,因此上限将是O(2^N)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28376741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档