用递归分析一下:
盘子数用 n表示 柱子用 A B C 表示
假设有1个盘子 n=1 移动方法 A--->C //可以看成是递归的中止条件
2个盘子 n=2 移动方法 A-->B //除过A最底的大盘外也就是 n-1 个盘子移动B上
A-->C // 在将A上最底下盘子移动到C
B-->C //在将B上的 的盘子(此时为n-1) 移动到C上
int funhan(int n,char a,char b, char c)
{
if(n==1)
cout < <a < <"-->" < <c < <endl; //中止条件如果剩下最后一个 或者n只有1个盘子 就直接移过去
else
{
funhan(n-1 , a , c , b); //如果有n个盘子先把n-1个盘子除过最底层移动到 B上去
cout < <a < <"--->" < <c < <endl; //在把A上的最底层盘子移动到 C上
funhan(n-1 , b , a , c); // 最后把刚才移动到B上的盘子移动到C上
//因为有递归中止条件,
}
}
递归 塔罗牌分析
最新推荐文章于 2025-03-11 14:38:15 发布