一、實驗目的:
理解遞迴演算法的思想和遞迴程式的執行過程,並能熟練編寫遞迴程式。
掌握分治演算法的思想,對給定的問題能設計出分治演算法予以解決。
二、實驗環境:
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 ...