关闭

汉诺塔递归实现

99人阅读 评论(0) 收藏 举报
#include<stdio.h>
#include<stdlib.h>
int pickTopDisk(char *current,char x)
{
    int i=0;
    while(current[i]!=x)
        i++;
        return i;
}
void hanoi(char *current,int n,char A,char B,char C)
{
    static int count=0;
    int i=0;
    if(n==1)
    {
        i=pickTopDisk(current,A);
        current [i]=C;
        count++;
        printf("move %d disk %d: %c->%c\n",count,i+1,A,C);
        return;
    }
    hanoi(current,n-1,A,C,B);
    current[n-1]=C;
    count++;
    printf("move %d disk %d: %c->%c\n",count,n,A,C);
    hanoi(current,n-1,B,A,C);
}
int main(int argc,char** argv)
{
    char current[]={'A','A','A','A'};
    char A='A',B='B',C='C';
    hanoi(current,4,A,B,C);
    return (EXIT_SUCCESS);
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:37949次
    • 积分:1870
    • 等级:
    • 排名:千里之外
    • 原创:152篇
    • 转载:0篇
    • 译文:0篇
    • 评论:31条
    最新评论