我有一个找到指数的函数,但我对函数的复杂性感到困惑。
功能:
def expo(number, exponent):
if exponent == 0:
return 1
elif exponent % 2 == 0:
val = expo(number, exponent / 2)
return val * val
else:
return number * expo(number, exponent - 1)
我尝试根据指数计算并绘制计算次数图并得到以下结果: Graph: Exponent : Calculations:
1 : 2, 2 : 3, 3 : 4, 4 : 4, 5 : 5, 6 : 5, 7 : 6, 8 : 5, 9 : 6, 10 : 6, 11 : 7, 12 : 6, 13 : 7, 14 : 7, 15 : 8, 16 : 6, 17 : 7, 18 : 7, 19 : 8, 20 : 7, 21 : 8, 22 : 8, 23 : 9, 24 : 7, 25 : 8, 26 : 8, 27 : 9, 28 : 8, 29 : 9, 30 : 9
如您所见,计算次数在波动,我认为 Big-O 表示法不会是线性的或二次的。我认为它会像一个多次多项式,其表示形式如下
我是对的还是我对 O(n) 表示法有错误的想法?
莫回无
米琪卡哇伊
相关分类