【递归】[C][入门]汉诺塔问题

       汉诺塔问题简单概括来说就是一次只能移动一块,且小的方块一定要在大的方块上面,问最少要移动几次才能将A上的方块全部移动到C上面;

我们从最简单的情况入手,如果A上只有一个方块,显而易见可以直接移动到C上面,答案为1;如果A上有两个方块,先把小的移动到B上,再把大的移动到C上,最后把小的从B上移动到C上。总共1+1+1=3次;

如果A上有3个方块,那么就要先把上面两个方块想办法转到B上去,转换成上一种情况,要经过3次;然后将A最后一个方块放到C上 1次;最后又要把B上的两个方块放到C上去,依旧是上一种情况,要经过3次,所以答案为3+1+3=7次;

从上不难分析出,如果有n个方块,那么要先把最上面的n-1个方块移到B上,最后一个移到C上,再将N-1个由B移到C上去;

即F(n)=F(n-1)+1+F(n-1);

问题分析完了,转换为C语言就很简单了;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值