演算法實驗三 遞迴與分治

2021-10-14 07:44:02 字數 1179 閱讀 3403

一、實驗目的:

理解遞迴演算法的思想和遞迴程式的執行過程,並能熟練編寫遞迴程式。

掌握分治演算法的思想,對給定的問題能設計出分治演算法予以解決。

二、實驗環境:

vc6.0

三、實驗內容:

無窮數列1,1,2,3,5,8,13,21,34,55,……,稱為fibonacci數列。它可以遞迴地定義為:

第n個fibonacci數可遞迴地計算如下:

int fibonacci(int n)

編寫完整的主函式,分別記錄利用上述遞迴函式求第47, 48, 49, 50, 51,52個fibonacci數所花費的時間。

#include#includeint fi(int n)

int main()

}

將遞迴函式改為尾遞迴,或者是遞推函式,求第47, 48, 49, 50, 51,52個fibonacci數所花費的時間,觀察效率是否得到提高。

#include#includedouble fi(int n)

else if (n % 2 == 0)

step(n - 1);

step(n - 2);

return 0;

}int main() ,半數集set(6)中有6個元素。

輸入:整數n(0輸出:半數集set(n)中的元素個數。

請設計遞迴函式,求出set(n)的個數,並分析演算法時間複雜度,對演算法進行改進,用程式驗證遞迴演算法,以及改進之後的演算法。

#include#includeusing namespace std;

int set(int n)

int main()

int main()

{ int n;

double x;

cout<

cin>>n;

memset(a,0,sizeof(a));

a[1]=1;

x= clock()/clocks_per_sec;

cout<

實驗一 遞迴與分治

1 由0到 4五個數字,組成 5位數,每個數字用一次,但十位和百位不能為 3 當然萬位不能為 0 輸出所有可能的五位數。includeusing namespace std intmain cout 2 程式設計求和 s a aa aaa aaaa aaaa.aaa n個 其中a為1 9a 以後每一...

遞迴演算法與分治策略

關於遞迴的學習 1 遞迴演算法的基本思想是 把規模大的 較難解決的問題變成規模較小的的問題。規模較小的問題又變成規模更小的問題,並且小到一定程度可以直接得出它的解,從而得到原來問題的解。遞迴是一種直接或間接呼叫自身的函式的一種演算法,很常用,一般用於解決三類問題 資料的定義按遞迴定義的。fibona...

演算法實驗一 遞迴分治 快速排序

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述給定乙個數列,用快速排序演算法把它排成公升序。輸入第一行是乙個整數n n不大於10000 表示要排序的數的個數 下面一行是用空格隔開的n個整數。輸出輸出排序後的數列,每個數字佔一行。輸入樣例 53 2 1 4 5 輸出樣例12 ...