递归

优点:定义简单,逻辑清晰
缺点:是过深的调用会导致栈溢出
两个条件:基线条件和递归条件

函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,
栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。
由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出

栈溢出的解决方法
针对尾递归优化的语言可以通过尾递归防止栈溢出。
尾递归事实上和循环是等价的,没有循环语句的编程语言只能通过尾递归实现循环。
Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。

查找列表最大的数字

def max(list):
	if len(list) == 2:
		return list[0] if list[0] > list[1] else list[1]
	sub_max = max(list[1:])
	return list[0] if list[0] > sub_max else sub_max
原文地址:https://www.cnblogs.com/LSJOP/p/7342760.html