汉诺塔。
汉诺塔是递归的入门程序。
#include<stdio.h>
void
hanoi(int n,char A,char B,char C){
if(n==1){
printf("Move disk %d from %c to %c\n",n,A,C);
}else{
hanoi(n-1,A,C,B);
printf("Move disk %d from %c to %c\n",n,A,C);
hanoi(n-1,B,A,C);
}
}
void
main(void){
int n;printf("请输入数字n以解决n阶汉诺塔问题:\n");
scanf("%d",&n);
hanoi(n,'A','B','C');
sleep(1);
}
这个是百度汉诺塔的c语言程序
abc是三个柱子。当只有一个盘子的时候,就从a到c
超过一个盘子的时候,就开始递归了。
首先,三个盘子的时候顺序是A→C,A→B,C→B,A→C,B→A,B→C,A→C
然后,当四个盘子的时候,就是将最上面的两个看成一个,移动到最后一个的时候,A→C
最后,递归就出现了。
汉诺塔是递归的入门程序。
#include<stdio.h>
void
hanoi(int n,char A,char B,char C){
if(n==1){
printf("Move disk %d from %c to %c\n",n,A,C);
}else{
hanoi(n-1,A,C,B);
printf("Move disk %d from %c to %c\n",n,A,C);
hanoi(n-1,B,A,C);
}
}
void
main(void){
int n;printf("请输入数字n以解决n阶汉诺塔问题:\n");
scanf("%d",&n);
hanoi(n,'A','B','C');
sleep(1);
}
这个是百度汉诺塔的c语言程序
abc是三个柱子。当只有一个盘子的时候,就从a到c
超过一个盘子的时候,就开始递归了。
首先,三个盘子的时候顺序是A→C,A→B,C→B,A→C,B→A,B→C,A→C
然后,当四个盘子的时候,就是将最上面的两个看成一个,移动到最后一个的时候,A→C
最后,递归就出现了。




