利用遞迴知識和c/c++語言,提公升自己的程式設計能力,實現遞迴**。
實現若干個遞迴描述的演算法。1) 漢諾塔遞迴演算法1) 漢諾塔問題的遞迴演算法
2) 棋盤覆蓋問題的遞迴演算法
3) 其它:任意設計乙個遞迴問題,寫出遞推關係並實現它。
#include
using
namespace std;
int i =1;
void
hanoi
(int n ,
char source ,
char relay ,
char destination)
else
}int
main()
2) 棋盤覆蓋遞迴演算法
#include
using
namespace std;
int tile=1;
int board[
100]
[100];
void
chessboard
(int tr,
int tc,
int dr,
int dc,
int size)
if(dr
=tc+s)
chessboard
(tr,tc+s,dr,dc,s)
;else
if(dr>=tr+s && dc
chessboard
(tr+s,tc,dr,dc,s)
;else
if(dr>=tr+s && dc>=tc+s)
chessboard
(tr+s,tc+s,dr,dc,s)
;else
}int
main()
}結果:
3) 快速排序的遞迴演算法
在快速排序中,記錄的比較和交換是從兩端向中間進行的,關鍵字較大的記錄一次就能交換到後面單元,關鍵字較小的記錄一次就能交換到前面單元,記錄每次移動的距離較大,因而總的比較和移動次數較少。
#include
using
namespace std;
void
quicksort
(int
,int
,int);
intmain()
; cout <<
"排序前:"
;for
(int i =
0; i <
10; i++
) cout << endl;
quicksort
(num,0,
9); cout <<
"排序後:"
;for
(int i =
0; i <
10; i++)}
void
quicksort
(int a,
int left,
int right)
} a[left]
= a[i]
; a[i]
= temp;
quicksort
(a, left, i-1)
;quicksort
(a, i+
1, right)
;}
演算法設計與分析 遞迴
遞迴是一種技術手段,並不嚴格算是一種演算法,是指程式直接間接呼叫自身的程式設計技巧。遞迴需要有邊界條件,遞迴前進段和遞迴返回段。1 當邊界條件不滿足時,遞迴前進 2 當邊界條件滿足時,遞迴返回。ps 在使用遞迴策略時,必須有乙個明確的遞迴結束條件,成為遞迴出口,否則將無限進行下去 遞迴的缺點 遞迴演...
演算法分析與設計 遞迴與尾遞迴
什麼是遞迴?遞迴最恰當的比喻,就是查詞典。我們使用的詞典,本身就是遞迴,為了解釋乙個詞,需要使用更多的詞。當你查乙個詞,發現這個詞的解釋中某個詞仍然不懂,於是你開始查這第二個詞,可惜,第二個詞裡仍然有不懂的詞,於是查第三個詞,這樣查下去,直到有乙個詞的解釋是你完全能看懂的,那麼遞迴走到了盡頭,然後你...
演算法分析與設計3 遞迴
任何乙個可以用計算機求解的問題所需的計算時間都與其規模n有關。問題的規模越小,越容易直接求解,解題所需的計算時間也越少。分治法的設計思想是,將乙個難以直接解決的大問題,分割成一些規模較小的相同問題,以便各個擊破,分而治之。如果原問題可分割成k個子問題 1 k n 且這些子問題都可解,並可利用這些子問...