递归函数:函数内部调用函数本身
优点:定义简单、逻辑清晰
函数调用是通过栈实现的,每进入一个函数调用,栈就会增加一层栈帧,每当函数返回,栈就会减一层栈帧
因为递归函数多次调用本身,可能会出现栈溢出的现象,所以我们要利用尾递归来防止栈溢出
尾递归:在函数返回的时候调用自身,return语句不包含表达式
练习:
请编写move(n, a, b, c)
函数,它接收参数n
,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法
def move(n, a, b, c): if n==1: print(a, '-->', c) else: move(n-1,a,c,b)#将n-1个盘子移到b盘上 move(1,a,b,c)#将最底部的盘子移到c盘上 move(n-1,b,a,c)#将b盘上的盘子移到c盘上
结果如下所示: