汉诺塔的问题

<?php
function han($n,$a,$b,$c){
    if($n==1){
        echo $a.'----->'.$c.'<br>';
    }else{
        han($n-1,$a,$c,$b);
        han(1,$a,$b,$c);
        han($n-1,$b,$a,$c);
    }
}

han(5,'A','B','C');

用递归实现汉诺塔移动盘子的问题;$n代表有几个盘子,han这个函数表示n个盘子借助$b把盘子从$a移动到$c,结束条件是只有一个盘子时从$a移动到$c,要不然就先把$n-1个盘子借助$c从$a移动到$b,再把最后一个盘子从$a移动到$c,这样最大的盘子就在$c的最下面了,然后就把$b上的$n-1个盘子借助$a移动到$c,这样汉诺塔的问题就解决啦,移动次数为2的n次方减一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值