Python递归

什么是递归Recursion?

〉 递归是一种解决问题的方法,其精髓是将问题分解为规模更小的相同问题,
持续分解,直到问题规模小到可以用非常简单直接的方式来解决。
〉 递归的问题分解方式非常独特,其算法方面的明显特征就是:在算法流程中
调用自身。
〉 递归为我们提供了一种对复杂问题的优雅解决方案,精妙的递归算法常会出
奇简单,令人赞叹。

递归“三定律”

 〉 为了向阿西莫夫的“机器人三定律”致敬,递归算法也总结出“三定律”

1 ,递归算法必须有一个基本结束条件(最小规模问题的直接解决)
2 ,递归算法必须能改变状态向基本结束条件演进(减小问题规模)
3 ,递归算法必须调用自身(解决减小了规模的相同问题)

列表求和:

def sum_list(lst):
	if len(lst) == 1:#终止条件
		return lst[0]
	return lst[0] + sum_list(lst[1:])#减小规模并调用自身


if __name__ == '__main__':
	lst = [1, 2, 3, 4, 5]
	print(sum_list(lst))

列表反转:

def reverse_str(str):
	if str == "":
		return str
	return reverse_str(str[1:]) + str[0]

回文词判断:

def check(str):
	if str == "" or len(str) == 1:
		return True
	return str[0] == str[len(str) - 1] and check(str[1:len(str) - 1])

进制转换:

def convertToStr(n, base):
	string = "0123456789ABCDEF"
	if n < base:
		return string[n]
	return convertToStr(n // base, base) + convertToStr(n % base, base)
原文地址:https://www.cnblogs.com/jasonhaven/p/7617619.html