汉诺塔 hanoi 如此简单
生活随笔
收集整理的這篇文章主要介紹了
汉诺塔 hanoi 如此简单
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先貼代碼,重點要理解遞歸函數的作用
#include <stdio.h>int hanoi (int n , char x , char y , char z){//將n個盤子從x到z
if ( n == 1 ){
move( n , x , y , z ) ;
} else {
hanoi ( n-1 , x , z , y ) ;//先將 第n個盤子上面的所有n-1盤子挪到y上(不需要深究這n-1個盤子是怎么挪上去的,因為這是遞歸,只要有?n==1?這個終止條件就好了)
move (n , x , y ,z );//將第n個盤子從x挪到z上
hanoi ( n-1 , y , x ,z );//將第n個盤子上面的所有n-1盤子從y挪到z上
}
}
void move( int n , char x , char y ,char z ){
printf ( "%d %c->%c \n",n,x,z ) ;
}
int main (){
hanoi (9 , 'A' , ' B' ,' C') ;
?? return 0;
}
看函數注釋,你差不多就明白了;
總結
以上是生活随笔為你收集整理的汉诺塔 hanoi 如此简单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3-08. 栈模拟队列(25)(ZJU_
- 下一篇: 缓存和字符串相互转换