c语言汉诺塔代码

    科技2023-10-10  106

    c语言汉诺塔递归

    思路是:汉诺塔中n个圆盘,首先将1–n-1个盘子看成一个盘,由于n-1上面的盘都比n-1小,所以用n-1代替1–n-1个盘进行移动,只有两个盘子在汉诺塔上的移动是A->B,A->C,B->C,n盘在回归最终位的后,对n-1盘再次进行类似于n盘的操作。直至n为1为止,递归结束。 代码如下:

    #include <stdio.h> #include <string.h> void move(char A,int n,char B)//定义一个move函数,来打印往哪挪,谁挪。 { printf(" %d 从%c挪到%c\n",n,A,B); } void Hanoi(int n,char A,char B,char C)//汉诺塔递归 { if(n==1)//递归终结条件 move(A,1,C); else { Hanoi(n-1,A,C,B); move(A,n,C); Hanoi(n-1,B,A,C); } } int main() { int a; char A = 'A', B = 'B', C = 'C'; scanf("%d",&a); Hanoi(a,A,B,C); return 0; }

    (完)

    Processed: 0.017, SQL: 8