C語言解決漢諾塔問題《經典》
首先要知道漢諾塔是怎麼一個問題
例如A 、B、 C 三個柱子,A柱子上假如放有三個盤子,最上邊是最小的,最下邊是最大的盤子;現在想讓A柱子借助B柱子将三個盤子移入到C柱子上,《且每次隻能移動一個盤子,而且要最後在C柱子上的盤子按從大到小依次堆起來》;這裡有用到函數,用函數遞歸實作了漢諾塔問題。
代碼實作如下:
// hanoi.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include "stdafx.h"
void hanoi(int n, char A, char B, char C) //n代表盤子數
{
if(n==1)
printf("%c--->%c\n",A, C);
else
{
hanoi(n-1, A, C, B); //A繞過C去到B上
printf("%c--->%c\n", A, C);
hanoi(n-1, B, A, C);
}
}
int main(int argc, char* argv[])
{
hanoi(3, 'A', 'B', 'C');
return 0;
}
例如代碼所示,如果是三個盤子,移動到C柱子上的步驟為:
不管幾個盤子,這個代碼都可以實作。隻需要改變“hanoi(3, ‘A’, ‘B’, ‘C’);”裡的3數字即可