0
第一个运行时间是O(log n),我知道这是大多数递归情况下的运行时间。类似的递归情况,不同的运行时间?
int happy (int n, int m) {
if (n < 10) return n;
else if (n < 100)
return happy (n - 2, m);
else
return happy (n/2, m);
}
然而,第二递归的情况下的运行时间为O(n)
int silly(int n, int m) {
if (n < 1) return m;
else if (n < 10)
return silly(n/2, m);
else
return silly(n - 2, m);
}
任何人都可以解释,为什么?我真的很感激!
谢谢您的回答。你有什么策略来计算运行时间吗? – user2913922
这不是一个简单的主题。我们的目标是试着弄清楚,给定'n'输入或者输入大小'n',算法执行多少有意义/重要_操作_(模糊定义)以完成。在这两个函数的情况下,我计算了函数调用自己的次数,直到达到基本大小写。 – mojo