【发布时间】:2017-11-02 08:27:13
【问题描述】:
我将此作为测试问题来评估以下递归方法的时间复杂度。
def multiply(x,y)
if y = 0:
return 0
z = multiply(x,y/2)
if y is even:
return 2z
else :
return x + 2z
我写了 log(n) 因为数字 y 不断减少 2 并且递归调用将在满足条件时很快结束。
【问题讨论】:
-
您确定解决方案不是 log(y)?
-
教授没有给我任何分数。我仍然认为它应该是 log(y)*。在与他讨论之前,我想征求专家意见。
-
如果你在 Python 中使用
multiply(10, 2)运行它,你会得到一个递归错误:RecursionError: maximum recursion depth exceeded in comparison -
第二行,代码中y = 0,你确定不是y == 0?
-
@AkashdeepSaluja 这也是我的假设。
标签: algorithm runtime time-complexity big-o