杩欎釜渚嬪瓙鍐欑殑澶浜嗭紝鍒板閮芥槸锛屼笉杩囦綔涓鸿嚜宸辩殑绗旇杩樻槸璐村嚭鏉ワ紝濡傛灉澶у鐨勬暟鎹粨鏋勬暀鏉愪笂鐨勪唬鐮佽皟璇曚笉閫氱殑璇濓紝杩欎釜浠g爜杩樻槸鏈夌偣浣滅敤鐨刕_^, 鍙﹀涓汉瑙夊緱杩欎釜渚嬪瓙涔熺‘瀹炴槸閫掑綊鐨勭粡鍏哥敤閫?IMG height=19 src="/Emoticons/regular_smile.gif" width=19 border=0>锛屼笅闈㈢殑浠g爜鍙傝冧簡<<c绋嬪簭璁捐鐨勬娊璞℃濈淮>>

/**//********************************************************************
created: 2005/12/24
created: 24:12:2005 10:42
filename: hanoi.c
author: Liu Qi
purpose: hanoi problem
*********************************************************************/


#include <stdio.h>
#include <assert.h>



#define COUNT 3




/**//*===========================================================================
* Function name: MoveSingleDisk
* Parameter: start:浠巗tart鏌卞瓙寮濮嬶紝绉诲姩鍒癴inish鏌卞瓙
* Precondition: void
* Description: 濡傛灉鍙湁涓涓洏瀛愶紝鐩存帴浠庡紑濮嬪緱閭f牴鏌卞瓙绉诲姩鍒扮粨鏉熷緱鏌卞瓙灏卞彲浠ヤ簡
* Return value: void
* Author: Liu Qi, [12/24/2005]
===========================================================================*/
void MoveSingleDisk(char start, char finish)


{
printf("%c -> %c\n", start, finish);
}




/**//*===========================================================================
* Function name: MoveTower
* Parameter: count:number of disks, start:寮濮嬬殑閭f牴鏌卞瓙
* Precondition: count > 0
* Description: 灏哻ount涓猟isk浠巗tart绉诲姩鍒癴inish锛屽熷姪temp
* Return value: void
* Author: Liu Qi, [12/24/2005]
===========================================================================*/
void MoveTower(int count, char start, char finish, char temp)


{
assert( count > 0 );

if (count == 1)

{
MoveSingleDisk(start, finish);
}
else

{
MoveTower(count - 1, start, temp, finish);
MoveSingleDisk(start, finish);
MoveTower(count - 1, temp, finish, start);
}
}


int main(int argc, char *argv[])


{
MoveTower(COUNT, 'A', 'B', 'C');
return 0;
}杩愯缁撴灉濡備笅锛?BR>
