recursion - Big-O 表示法运行时 : Cracking the Coding Interview example

标签 recursion runtime big-o coding-efficiency

我主要是想确认一下我的理解。以下是《破解编码面试》中的大 O 表示法问题。答案是运行时间是“O(b) 或 O(n)。递归代码迭代 b 调用,因为它在每个级别都减一。”

所以我知道函数的 power(a, b-1) 部分等于 O(b) 或 O(n)。 那么“a * power(a, b-1)”行中的第一个“a”会是常数吗?

我知道当我们有像 O(constant * b) 这样的大 O 时,我们必须删除常量,它就变成了 O(b)。

int power(int a, int b){ 
    if(b < 0)
       return 0; //error
    else if(b == 0)
       return 1; 
    else
       return a * power(a, b-1)
 }

最佳答案

您的power函数只是计算某个输入整数ab次方的幂。它只需将 a 乘以自身 b 次,然后返回该值即可实现此目的。函数调用次数实际上与a 的值无关,而仅与b 的值有关。因此,该函数的行为类似于 O(b)。我们还可以将 b 重命名为 n 并将其称为 O(n),这可能是您更有可能看到的。

关于recursion - Big-O 表示法运行时 : Cracking the Coding Interview example,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51868778/

相关文章:

python - 如何将此树递归更改为尾递归?

recursion - lisp 中的递归列表函数,用于查找列表中出现的次数

algorithm - 大 O 概念/算法逻辑,不确定我的解决方案,不太擅长循环

algorithm - 使用模的 while 循环的时间复杂度

python - 随机快速排序中的最大递归深度误差

java使用递归打印项目列表似乎效率低下

Scala 不允许我执行路径包含空格的批处理文件。相同的 Java 代码允许。什么给了?

c++ - 在没有运行时库的情况下在 Linux 下编译 C++

algorithm - 采访 : Renaming all files in a directory using a data structure

python - 归并排序的合并部分的大O是什么?