基本介绍
1、简单的说: 递归就是函数自己调用自己,每次调用时传入不同的值
2、递归有助于编程者解决复杂问题,同时可以让代码变得简洁
递归能解决什么问题?
1、各种数学问题如:皇后问题、汉诺塔、阶乘问题、迷宫问题等等
2、各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等
3、将用栈解决的问题 —》 递归代码比较简洁
递归例子
(1)打印问题
python">#当执行test(4),输出什么?
def test(n):if n > 2:test(n-1) #在函数内部调用它自己print("n=",n)# 执行
test(4)
调用一个函数就创建一个新空间,当返回的时候,对应的栈就被回收了。
(2)阶乘问题
python"># 阶乘,当执行factorial(4),返回值是多少?
def factorial(n):if n == 1:return 1else:return factorial(n-1)*n#执行
print(factorial(4))
递归重要规则
1、执行一个函数时,就创建一个新的空间(栈空间)
2、函数的变量是独立的,比如n变量
3、递归必须向退出递归的条件逼近,否则就是无限递归,就会出现 RecursionError: maximum recursiondepth exceeded 【死龟了:)】
python">def test(n):if n > 2:test(n)print("n=", n)# 调用
test(4)
4、当一个函数执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁