python学习之递归函数

递归函数:函数内部调用函数本身

优点:定义简单、逻辑清晰

    函数调用是通过栈实现的,每进入一个函数调用,栈就会增加一层栈帧,每当函数返回,栈就会减一层栈帧

  因为递归函数多次调用本身,可能会出现栈溢出的现象,所以我们要利用尾递归来防止栈溢出

尾递归:在函数返回的时候调用自身,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盘上

结果如下所示:

原文地址:https://www.cnblogs.com/manaizhuang/p/8670408.html