【发布时间】:2016-10-18 06:12:30
【问题描述】:
我有以下代码,这是这个问题的答案:https://leetcode.com/problems/add-digits/
class Solution {
public:
int addDigits(int num) {
if (!num/10)
return num;
long d = 1;
int retVal = 0;
while(num / d){
d *= 10;
}
for(d; d >= 1; d/=10){
retVal += num / d;
num %= d;
}
if (retVal > 9)
retVal = addDigits(retVal);
return retVal;
}
};
不过,作为对此的后续行动,我正在尝试确定 BigO 的增长情况。我第一次尝试计算它是O(n^n)(我假设因为每个深度的增长都直接取决于每次n),这令人沮丧。我错了吗?我希望我错了。
【问题讨论】:
-
当然不是
O(n^n)。而是像O(f(n))这样的东西,其中f()是一个非线性函数。我不太熟悉这个话题,所以很抱歉我不能告诉你f()应该是什么样子。