运行代码
#include<stdio.h>
void hanoi(int paraN, char paraSource, char paraDestination, char paraTransit)
{
if (paraN <=0)
{
return;
}
else
{
hanoi(paraN - 1, paraSource, paraTransit, paraDestination);
printf("%c -> %c \r\n", paraSource, paraDestination);
hanoi(paraN - 1, paraTransit, paraDestination, paraSource);
}
}
void hanoiTest()
{
printf("---- addToTest begins ----\r\n");
printf("2 plates\r\n");
hanoi(2, 'A', 'B', 'C');
printf("3 plates\r\n");
hanoi(3, 'A', 'B', 'C');
printf("---- addTOTest ends. ----\r\n");
}
void main()
{
hanoiTest();
}
运行结果
本代码使用递归算法解决汉诺塔问题。代码本身很简单,但代码里面的思考方向很难。
递归算法特有的容易绕晕,编写代码时,调用的时候极其容易出错。最好在打之前先通过构思画一张示意图出来方便理解。