100財富求講解達人 C語言遞迴漢諾塔求講解

時間 2023-04-16 12:39:06

1樓:夏簫軒

遞迴法是一種很方便的演算法,你不要太過於糾結過程。

hannoi這個函式4個變數,分別是要處理的塔的層數n,和塔a,b,c;

a表示原塔,b是目標塔,c是中間的塔;

當n=1時,只有一層,直接移動;

其餘情況:先講上面的(n-1)層塔移到c上,此處可看做原問題的子問題,即hanoi(n-1,a,c,b);

再將最底層移到b,即可。

至於程式,樓上的已經改的很好了, 我就不多說了。

不知這樣,夠明白不?

2樓:匿名使用者

首先這個**有錯,已經幫你改了,講解見註釋,不懂可追問。

void hanoi(int n, char a, char b, char c)

//將塔座x上按直徑由小到大且自上而下編號為1到n的n個圓盤按規則搬到塔座z上。

//y可做輔助塔座。

void main()

3樓:雪寫江山

要怎麼講解呀。

hanoi(n,a,b,c)

int n;

char a,b,c;

//把n-1個盤子從b移到c

4樓:樂倚雲

main()

hanoi(n,a,b,c) /把n個金針從a移到c(藉助b)int n;

char a,b,c;

//把n-1跟金針從b移到c(藉助a)

實際上該問題是把n化成兩個n-1的問題,不斷的遞迴下去,直到問題的基本例項n=1,然後n=1的就可以解決,接著解決n=2的問題,在解決n=3的問題、、、一直迴歸到規模為n的問題,最後該問題得到解決!仔細體會遞迴與迴歸的問題!

5樓:網友

哥,我很糾結的告訴你,你的程式有點小小的錯誤:

給你一個我改過的:

#include

main()

int hanoi(n,a,b,c)

int n;

char a,b,c;

首先:你定義的是:hanoi這個函式,所有你程式上上下下,這個hanoi不能打錯;你的程式中就有打錯了的:

int hanoi(n,a,b,c) /定義函式hanoi*/int n;

char a,b,c; /定義abc型別*/

6樓:匿名使用者

漢諾一就是一個遞迴呼叫,多研究下遞迴過程就ok了。如果滿足if條件就停止遞迴呼叫,開始返回函式的值,否則進入else繼續進行遞迴呼叫,一直到你的n等於1.

7樓:匿名使用者

其實遞迴就是一個棧的過程。你可以自己去看看棧。

求c漢諾塔遞迴過程詳解

8樓:匿名使用者

就是當n=1的時候才跳出方法。

不=1的時候在執行move()方法。

好像else裡的後邊2個不回執行 你第一句都直接呼叫方法了應該後便的執行不了。

c語言遞迴求階乘,c語言怎麼用遞迴呼叫函式的方法求n的階乘?

問明 舉例 用遞迴方法求n include int main int n int y printf input a integer number scanf d n y fac n printf d d n n,y return 0 int fac int n int f if n 0 printf...

C語言怎麼用遞迴法求階乘,c語言怎麼用遞迴呼叫函式的方法求n的階乘?

辜亭晚示未 n的階乘,就是從1開始乘到n,即1 2 3 n 1 n。即n 1 2 3 n 1 n。而 n 1 1 2 3 n 1 所以可以得出,n n 1 n。由這個概念,可以得出遞迴求階乘函式fact的演算法 1如果傳入引數為0或1,返回1 2對於任意的n,返回n fact n 1 如下 int ...

c語言求詳細講解例2 ,c語言求詳細講解 例2 4 求。

程式的功能是求 1 1 2 1 3 1 4.1 99 1 100 的值。s4 對sign變數做正 負的轉換。第一次是正的,下一次變為負的,再下次又變為正,以此類推。變數sign代表了各項前的符號。s5 得到各項的值,再變換符號。第一項是初值1,第二項是 1 2,第三項是1 3,第四項是 1 4。以此...