大家好!
今天为大家介绍一下算法中递归实现问题之汉诺塔(hanoi)问题。
递归说白了就是套娃方法,不过递归是有一定的深度。
递归的两种形式:
# 第一种
def func(n):
if n > 0:
print(n)
func(n-1)
func(6)
###执行结果
6
5
4
3
2
1
# 第二种
def func(n):
if n > 0:
func(n-1)
print(n)
func(6)
###执行结果
1
2
3
4
5
6
这里有两张图:
大的方框表示函数,小的表示打印内容。箭头表示程序执行方向。
第一张为第一种方式,第二张为第二种方式。
这是百度百科对问题的介绍:https://baike.baidu.com/item/%E6%B1%89%E8%AF%BA%E5%A1%94/3468295?fr=aladdin
图片演示:
def hanoi(n,a,b,c):
if n > 0:
hanoi(n-1,a,c,b)
print('from {} move to {}'.format(a,c))
hanoi(n-1,b,a,c)
hanoi(n,'X','Y','Z')
n : 表示为多少个。
xyz:为三个柱子。
推荐一个汉诺塔问题视频讲解:
https://www.bilibili.com/video/BV1uA411N7c5?p=6