C語言程式設計實現漢諾塔問題

2021-09-25 15:15:18 字數 738 閱讀 4936

1.首先解釋一下,漢諾塔問題:古代梵塔內有a、b、c3個座,開始時a座上面有64個盤子,盤子大小不等,大的在下,小的在上。乙個老和尚想把64個盤子從a移到c,規定移動過程中3個座上面始終保持大的在下,小的在上,且每次只能移動乙個盤子。程式設計實現輸出移動盤子的過程。

2.解題思路

(1)命令第2個和尚將上面63個盤子從a移到b;

(2)自己把最底下,最大的那個盤子從a移到c;

(3)再讓第2個和尚把63個盤子從b移到c;

只需3步即完成,這中間蘊涵的就是遞迴思想。但是還有乙個問題,怎麼才能完成步驟(1)和(3)呢?看下面的3個步驟:

<1> 命令第3個和尚將上面62個盤子從a移到c;

<2> 自己把最底下,最大的那個盤子從a移到b;

<3> 再讓第3個和尚把62個盤子從c移到b;

這就完成了步驟(1),步驟(3)的思路可類推。

c語言**如下

#includeint main()

//將n個盤子借助two,從one移到three

void hanoi(int n,char one ,char two ,char three ) //定義漢諾塔函式

}void move (char x ,char y ) //定義move函式,列印移動的過程

C語言遞迴實現漢諾塔問題

剛剛學習漢諾塔問題想要快速上手的話也可以理解為由三個柱構成 具體到函式裡下面的注釋裡有寫。在使用遞迴前我們首先要知道什麼是遞迴 程式呼叫自身的程式設計技巧稱為遞迴 recursion 遞迴的作用 遞迴做為一種演算法在程式語言中廣泛應用。乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它...

C語言實現漢諾塔問題

革啟部落格,革啟網,袁歡,袁歡的部落格,袁歡部落格 版本 vs2019社群版 功能 c語言漢諾塔問題 include void move char x,char y void move char x,char y void hannota int n,char one,char two,char t...

C語言程式設計遞迴演算法實現漢諾塔

法國數學家愛德華盧卡斯曾編寫過乙個印度的古老傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金片 一次只移動一片,不...