编程语言
首页 > 编程语言> > Python——递归函数

Python——递归函数

作者:互联网

递归函数 - 汉诺塔的魅力

主要通过对汉诺塔问题的探讨,让学习者了解并掌握递归函数的相关知识。

相关知识

如下图2所示:
在这里插入图片描述

这个反复移动圆盘的过程就是递归。例如我们每次想解决n个圆盘的移动问题,就要先解决(n-1)个盘子进行同样操作的问题。我们先假设a柱上只有3个圆盘,利用Python 进行编程实现圆盘的移动

代码如下:

def move(n, a, b, c):
    if(n == 1):
        print(a,"->",c)
        return
    move(n-1, a, c, b)
    move(1, a, b, c)
    move(n-1, b, a, c)
move(3, "a", "b", "c")

函数运行结果:

a -> c
a -> b
c -> b
a -> c
b -> a
b -> c
a -> c

程序分析:

def move(n, a, b, c):
   if(n == 1):
       print(a,"->",c)
       return
   move(n-1, a, c, b)
  move(1, a, b, c)
move(n-1, b, a, c)

最后我们调用move函数将3个圆盘从a柱移动到到c柱。当移动64个圆盘时,只需要将调用函数move(n,a,b,c)中的n变为64即可。这个计算量是十分巨大的,也只能交给计算机去解决。

move(3, "a", "b", "c")

小结

编程要求

  1. 定义一个函数fact(n),实现的功能是对输入的正整数n进行n!运算;
  2. 调用函数fact(n),对输入的正整数n进行阶乘运算,并输出计算结果。

测试说明

测试输入:

5

预期输出:

120

测试输入:

6

预期输出:

720

测试输入:

7

预期输出:

5040

测试输入:

8

预期输出:

40320

上代码:
在这里插入图片描述

如果注释理解有误,请大佬们多多评论指教!!

标签:柱上,递归函数,Python,move,圆盘,汉诺塔,移动
来源: https://blog.csdn.net/yelitoudu/article/details/116657177