码迷,mamicode.com
首页 > 其他好文 > 详细

汉诺塔略写

时间:2019-05-12 14:12:59      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:就是   循环   main   stdio.h   移动   printf   除了   表达   游戏   

#include<stdio.h>
void hanoi(int n,char A,char B,char C)/*n为积木的数量,ABC为三根柱子,A是起点,B是辅助点,C是终点*/ 
{
     if(n==1) 
    {
        printf("%c -> %c\n",A,C);/*只有一个盘子就直接A移动到C就好了*/ 
    }
    else
    {
        hanoi(n-1,A,C,B);/*把A中除了底部那块积木看成一个整体为n-1块,绕过C柱放到B*/ 
        printf("%c -> %c\n",A,C);/*把剩下的最底下的那块放到C上*/ 
        hanoi(n-1,B,A,C);/*把放到B上的n-1块在放到C上*/ 
    }
}
 int main()
 {
     hanoi(3,A,B,C);
     return 0;     
 }

这个代码比较简单,主要通过改变n的值来改变积木的数量,从最少的两块开始理解,A>B,A>C,B>C,然后开始用递归的思想,把除了最底下的那一块积木看成整体,即为“1”为一个整体,“n-1”为一个整体,开始循环开始的步骤就ok了,这就是汉诺塔游戏最简单的一种表达。

汉诺塔略写

标签:就是   循环   main   stdio.h   移动   printf   除了   表达   游戏   

原文地址:https://www.cnblogs.com/zt1037054045/p/10851956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!