汉诺塔问题简单概括来说就是一次只能移动一块,且小的方块一定要在大的方块上面,问最少要移动几次才能将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语言就很简单了;