分享一个缩短递归算法时间复杂度的小方法
作者:互联网
原文链接:https://programmercarl.com/
例题:用时间复杂度为O(log^n)的算法求解x的n次方
1.常见递归解法:
def function1(x, n):
if n==0:
return 1
else:
return function1(x, n-1)*x
该方法的时间复杂度为O(n)
2.区分n的奇偶性
def function2(x, n):
if n==0:
return 1
if n%2==1:
return function2(x, n/2) * function(x, n/2) * x
else:
return function2(x, n/2) * function(x, n/2)
该方法的时间复杂度依旧在O(n)
3.减少递归次数
def function3(x, n):
if n==0:
return 1
t = function3(x, n/2)
if n%2==1:
return t*t*x
else:
return t*t
该方法将第二种的多次递归改成t的一次递归,如此便将时间复杂度降低到了O(log^n)
标签:function2,return,递归,复杂度,else,算法,def 来源: https://blog.csdn.net/wangyang_luyao/article/details/120236003