1 条题解

  • 0
    @ 2023-6-11 12:16:28

    C :

    #include<stdio.h>
    int i = 1;//定义全局变量,每次调用后加1
    void Hanoi(int n, char A, char B, char C)
    {
         
        if (n == 1)//如果只有一个直接从A移到B   "%2d-(%2d):%c==>%c\n"
        {
        printf("%c To %c\n",A,C);
         
        }
        else
        {
       Hanoi(n - 1, A, C, B);//把n - 1个从A移到C借助B
         
        printf("%c To %c\n",A, C);
        Hanoi(n - 1, B, A, C);//把n - 1个从C移到B借助B
            
        }
         
    }
    int main()
    {
        int n;
        char A = 'A'; //定义ABC表示三个柱子
        char B = 'B';
        char C = 'C';
        scanf("%d", &n);
        Hanoi(n, A, B, C);
         
        return 0;
    }
    

    C++ :

    #include <iostream>
    using namespace std;
    
    //n代表盘子的数量,a代表放盘子的塔,b代表中间的辅助塔,c代表目标塔 
    void hanNuo(int n,char a,char b,char c){
    	if(n > 0){
    		//把上面的n-1个盘子,从a塔借助于c塔放到b塔上 
    		hanNuo(n - 1,a,c,b);
    		//把最下面的第n个盘子,从a移动到c 
    		cout<<a<<" To "<<c<<endl;
    		//将b塔上的n-1个盘子,从b移动到c借助于a
    		hanNuo(n - 1,b,a,c); 	 	
    	}
    }
    
    int main(){
    	int n;
    	cin>>n;
     	hanNuo(n,'A','B','C');
    }
    

    Python :

    def hanoi(n,A,B,C):
        if n==1:
            print(A,"To",C)
        else:
            hanoi(n-1,A,C,B)
            print(A,"To",C)
            hanoi(n-1,B,A,C)
    x=int(input())
    hanoi(x,"A","B","C")
    
    
    • 1

    【基础】经典递归问题——汉诺塔

    信息

    ID
    2154
    时间
    1000ms
    内存
    16MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者