使用C語言的遞歸玩漢諾塔遊戲

遞歸函數雖然比不上指針,但是在C語言中的地位和複雜程度,但是他也不是隨便就能搞懂的,這裏通過漢諾塔遊戲來進行C語言遞歸的訓練。

一、漢諾塔遊戲介紹

  相傳在古印度聖廟中,有一種被稱爲漢諾塔(Hanoi)的遊戲。該遊戲是在一塊銅板裝置上,有三根杆(編號A、B、C),在A杆自下而上、由大到小按順序放置64個金盤(如下圖)。遊戲的目標:把A杆上的金盤全部移到C杆上,並仍保持原有順序疊好。操作規則:每次只能移動一個盤子,並且在移動過程中三根杆上都始終保持大盤在下,小盤在上,操作過程中盤子可以置於A、B、C任一杆上。
在這裏插入圖片描述

二、破解程序

#include <stdio.h>
void hanoi(int n,char x,char y,char z)
{
	if(n==1)
	{
		printf("%c-->%c\n",x,z);
	}
	else
	{
		hanoi(n-1,x,z,y);//將第N-1個從x藉助Z移動到Y 
		printf("%c-->%c\n",x,z);
		hanoi(n-1,y,x,z);
	}
}
int main()
{
	int n;
	printf("請輸入漢諾塔的層數");
	scanf("%d",&n);
	hanoi(n,'X','Y','Z');
	return 0;
}

【運行結果】
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章