1樓:匿名使用者
我記得這個題目好像是用到了遞迴。。。很多書上貌似都有這個問題的 程式例項。。
c語言:求解漢諾塔問題
2樓:玄冰絕塵
漢諾塔問題用遞迴解決比較容易,下面**是我用c++寫的,你可以參考#include
using namespace std;
void move(char ch1,char ch2)
3樓:匿名使用者
我來解釋一下樓上的做法。
漢諾塔 的解題關鍵就是 把a上的n個盤子 借助 b 移到 c上。
而分解動作 就是。
1:先把a上的 n-1個盤子 借助 c 移到 b上 即hannuo(n-1,pa,pc,pb);
2:把a上最後(大)的盤子移到c上 即cout<"<3:再把b上的 n-1個盤子 借助 a 移到 c上 即hannuo(n-1,pb,pa,pc);
不斷的通過hannuo遞迴實現 把乙個柱子上的盤子 借助另乙個柱子 移到第三個柱子上。
hannuo的變數順序是(被移動柱 借助柱 目標柱)
題目不難做 關鍵是分析清楚演算法。
具體的程式參考樓上就可以了。
cóïñôìâä¿çóöú£¡£¡£¡ººåµëþîêìâ 15
c語言漢諾塔問題
4樓:匿名使用者
純c環境下需要把變數的定義放到模組的最上方,不能先呼叫函式再定義變數之類的。
#includehan函式中的 int n;去掉,n是函式引數傳過來的值,不去掉會出現類似死迴圈的無限遞迴;
給個我寫的漢諾塔:
#include
int count=0;
struct queuequeue[1000];
void move(int n,char from,char ast,char dst)
else}int main(void)
return 0;
}輸入是盤子數,輸出是步數跟每一步的操作。
5樓:匿名使用者
#include
是#include<>
han函式體裡的int n;去掉,已經宣告過沒必要再宣告一次。
6樓:匿名使用者
嘿嘿!你把stdio寫成stido了。
han()中把int n;去掉。
c語言漢諾塔問題
7樓:匿名使用者
是的,要移植遞迴到 n ==1的時候,才會開始有呼叫move函式,當n==1之後,函式就返回到上一次的hanoi函式(也就是else中的第乙個hanoi)的結束,接著在再次呼叫move函式,在接下來就又是上面的過程了,移植到所有的遞迴都結束,才會重新返回main函式。
其實遞迴就是自己呼叫自己的過程,只不過在某乙個特定的條件下才能結束自己。
c語言關於漢諾塔問題怎麼求解
8樓:無佚無名
#include
void move(int n,char x,char y);
void hanoi(int n,char one,char two,char three);
int main()
void hanoi(int n,char one,char two,char three)
}void move(int n,char x,char y)這樣就行了,另外輸入的數不能太大,最好10以內,要是超過64,有你受的,一會半會兒是計算不玩的。
9樓:匿名使用者
需要乙個遞迴演算法 網上可以搜到了 而且很多 希望採納 謝謝了。
漢諾塔c語言問題
10樓:匿名使用者
我初學時,也看不懂,主要是不理解遞迴思想,好好看看,你按著這個演算法用筆畫一下每個步驟後的結果,畫到最後就看出來是什麼回事了。
11樓:匿名使用者
hanoi(m,'a','b','c');這個演算法的目的就是將m個積木塊,從'a『柱經過'b'柱移到'c『柱上。
給你照著**講吧。
void hanoi(int n,char one ,char two,char three)
}整個遞迴的過程你可以用n=2,n=3在腦力裡過一遍就應該沒有問題了。
他就是迴圈呼叫hanoi這個方法,直到n==1
12樓:匿名使用者
這個是遞迴的問題,不要跟蹤,注重邏輯。有問題再問。
c語言——漢諾塔問題
c語言遞迴問題: 漢諾塔問題:
求解C語言程式設計題,C語言程式設計題求解
int main else goto again for i 0 i 100 i 僅供參考 冬一又二分之一 include include include int get3num int a,int b,int n int i int sum 0 for i 0 iif a i 3 0 b sum ...
幾道c語言的題,求解,幾道C語言的題,求解
生秋 第一題 include int main 第二題 include include int main 第三題邏輯沒錯,不過忘記加 費了 include include int main 第四題 include include int main 第五題測試資料沒加逗號的,相加可以修改scanf i...
C語言問題求解謝謝,c語言程式設計問題,求解,謝謝。我的過程哪錯了
這個函式的作用是反向輸出2進製數 具體解釋一下這個bin函式吧 首先,判斷x 2是否大於0,大於0 的時候呼叫bin x 2 其實就是把x除以2以後再次呼叫函式,所以這個函式每一次都會把原來的x的數字給除以2,一直到x等於1為止。這個時候函式結束。然後,這個bin函式輸出此時x對於2的餘數,當x等於...