Python实现递归

递归是一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。能把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略常常只需要少量的代码

初学编程,接触递归的时候我只觉得,哇,好厉害好厉害啊,好像很简单的样子,但是真正用起来比较考验你的思维逻辑,理清问题是前提关键。

例子:汉诺塔游戏
这里写图片描述
hanoi规则就是把一叠大小递增的圆盘从a移动到c,在整个过程中,可以借助b,但是必须保证小盘在大盘上方。

递归思路:当a上有n(n>1)个盘子时,利用b作为辅助,先将上方的n-1个盘子移动到b上,然后n号盘就能从a移到c;
同理,接下来就是递归的思想了,再用a作为辅助,按同上的思路把上方的n-2个盘子移动到a,然后n-1号盘就能移到c了。

下面的代码给出解游戏的方法:

def hanoi(n,x,y,z):
    if n==1:
        print(x,' --> ',z)
    else:
        hanoi(n-1,x,z,y)
        print(x,' --> ',z) 
        hanoi(n-1,y,x,z)
n=int(input('请输入入汉诺塔的层数:'))
hanoi(n,'x','y','z') 

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值