对于以下功能,
我做了
但我一定做错了......答案应该是O(log n)
。我在Big O很糟糕...还没有完全理解主要定理,这在学校还没有教过。他们只教授递归树
答案 0 :(得分:2)
如果我们假设所有算术运算都在O(1)中完成,那么: 当我们看到每个函数调用时,我们将exp除以2.当我们用exp达到零时 - 我们完成了。 我们可以在没有达到零的情况下将exp分成两次?这是日志exp。所以log exp函数调用* O(1)给出log(exp)复杂度。 找到几何序列的总和,你找到了另一个问题的答案:完成了多少节点(所有兄弟姐妹都存在)有n片叶子的树: 假设n = 4:
1' |_1'' |_1''' |_2''' |_2'' |_3''' |_4'''
你在这样的树中找到节点的数量
答案 1 :(得分:1)
您在数学开始时所做的假设是说您在函数调用Exp(n)
中花了“n”时间,在Exp(n/2)
中“n / 2”时间,“n / 4”时间Exp(n/4)
等等......
但实际上,您只在每个函数调用中花费O(1)
个恒定时间。那么,你有log(n)
个恒定时间的函数调用。尝试使用这个开始假设来运行剩下的数学运算,看看你得到了什么。