|||
结束条件:n==1: 直接移动:
H(1, 'x', 'y', 'z') 相当于:move('x','z');
因此,最简单的程序可以写成:
====================================
int steps=1;/*这个是步数统计*/
void move(char from, char to){
printf("%d: %c -> %cn", steps++, from, to);
}
void h(int n, char from, char via, char to){
if(n==1){
move(from, to);
return;
}
h(n-1, from, to, via);
move(from, to);
h(n-1, via, from, to);
}
/*下面是以8个盘子为例的调用*/
void main(){
h(8,'x','y','z');
}
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-4-23 18:34
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社