递归函数
如果一个函数在内部调用自身本身,这个函数就是递归函数。
递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。
使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。python3默
认递归的深度是100,如果想要更改递归深度,可以导入sys模块,设置递归深度最大值。
import sys
sys.setrecursionlimit(1000)
递归的使用:
1、求阶乘
n! = 1 x 2 x 3 x ... x n
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
>>> fact(5)
120
2、汉诺塔
请编写move(n, a, b, c)
函数,它接收参数n
,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如:
3、斐波那契数列
Fibonacci数列为:0、1、1、2、3、5、8、13、21......
数列第一项为0,第二项为1,从第三项开始,每一项为相邻前两项之和。
用递归的方法来定义:
- F(0) = 0
- F(1) = 1
- F(n) = F(n-1) + F(n-2) , n>=2
时间: 2024-10-09 04:54:07