目录
1.概念
递归,即函数自己调用自己。
如果对于递归概念不了解,可以看我上一期的文章分享。
2.原理
问题:
有一个塔,塔里面有三个柱子A,B,C。柱子A上面有若干个盘子,盘子大小不等,但是大的在下面,小的在上面。
把这些盘子从A柱子转移到C柱子,中间可以借助B柱子,但是每次只能移动一个盘子,并且在移动的过程中,3个柱子上的盘子始终要保持大盘子在下面,小盘子在上面
抽象模型:
考虑递归算法,将问题分解,假设有三个圆盘。
1.先设法将2个圆盘从A移动到B
2.将A上最后一个圆盘(最大的那个)移动到C
3.将B上2个圆盘全部移动到C上
3.示例
def fanta(n,a,b,c):
if n == 1:
print(a,"->",c)
else:
fanta(n-1,a,c,b)
print(a,"->",c)
fanta(n-1,b,a,c)
fanta(3,'a','b','c')