汉诺塔

#include <stdio.h>

void hanoi(int n, char x, char y, char z);

int count = 0;

void hanoi(int n, char x, char y, char z)
{
    if (n == 1) 
    {
        count++;
        printf("%3d : %c ---> %c\n", count, x, z);
    }
    else
    {
        hanoi(n-1,x,z,y);//将前 n-1 个盘子从x移动到y上
        count++;
        printf("%3d : %c ---> %c\n", count, x, z);//将最底下的盘子从x移动到z
        hanoi(n-1, y,x ,z);//将y上的 n-1 个盘子移动到z上
    }
}
void main(void) 
{
    int i;
    printf("请输入罗汉塔的层数:");
    scanf("%d", &i);
    
    hanoi(i, 'x', 'y' , 'z' );
}

i = 0
def hanoi(n,x,y,z):
    global i #声明全局变量
    if n == 1:
        i = i + 1
        print(str(i),':',x,' ---> ',z)
    else:
        hanoi(n-1,x,z,y) #将前 n-1 个盘子从x移动到y上
        i = i + 1
        print(str(i),':',x,' ---> ',z) #将最底下的盘子从x移动到z
        hanoi(n-1,y,x,z) #将y上的 n-1 个盘子移动到z上

n = int(input('请输入层数:'))
hanoi(n,'x','y','z')

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务