首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递推码的空间复杂度

递推码的空间复杂度
EN

Stack Overflow用户
提问于 2012-06-19 06:14:18
回答 1查看 2.1K关注 0票数 1

考虑以下Java方法:

代码语言:javascript
复制
   public static void f(int n) {
    if (n<=1) { 
       System.out.print(n) ; 
       return; 
   }else {
       f(n/2) ;
       System.out.print(n);
       f(n/2);
    }
 } // end of method

问题3.设S(n)表示f(n)的空间复杂性。下列哪种说法是正确的?

  • A: S(n) = (2n)
  • B: S(n) = ( n)
  • C: S(n) = (log N) <-正确答案,有人知道为什么吗?
  • D:上述

F 210

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-19 06:19:34

每当函数递归地调用自己时,所有局部变量都留在堆栈上,并将新的一组局部变量推送到堆栈中进行新调用。这意味着您关心最多有多少次调用,换句话说,递归的最大深度是多少。

很明显,它是log n,因为连续的论证元是n,n/2,n/4,…,1。局部变量的数量是恒定的,即1(堆栈上需要空间),因此总的空间复杂度是O(log )。

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

https://stackoverflow.com/questions/11095374

复制
相关文章

相似问题

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