递归是一种将原问题分解更小的问题以解决原问题的方法。
这就是递归的力量。
我们来看递归算法在python中的运用:对一个数组求和
首先,先来看一段没有使用递归算法的python程序
def list_sum(num_list):
the_sum = 0
for i in num_list:
the_sum = the_sum + i
return the_sum
print(list_sum([1,3,5,7,9]))
接着,我们使用递归算法实现相同的功能
def list_sum(num_list):
if len(num_list) == 1:
return num_list[0]
else:
return num_list[0] + list_sum(num_list[1:])
print(list_sum([1,3,5,7,9]))
第一次循环,返回1+list_sum([3,5,7,9])
第二次循环,返回1+3+list_sum([5,7,9])
……
我们再看一个例子,将十进制转化为n进制,其中2<=n<=16
def to_str(n,base):
convert_string = "0123456789ABCDEF"
if n < base:
return convert_string[n]
else:
return to_str(n // base,base) + convert_string[n % base]
print(to_str(402,16))
第一次循环,返回to_str(25,16) + 2
第二次循环,返回to_str(1,16) +9+ 2
第二次循环,返回1+9+ 2=192