遞迴 演算法考試

2021-10-07 23:50:19 字數 2220 閱讀 7013

/** 

* 選擇法排序 p(63)

* **/#include

using

namespace std;

void

input

(int

*element,

int n)

void

show

(int

*element,

int n)

void

swap

(int

*p,int

*q)//非遞迴選擇排序函式

//每次迴圈找整個陣列的最小值並依次放入0,1,2.....n-1的位置

void

select

(int

*element,

int n)

}swap

(element+i,element+min_location)

;//上層迴圈執行完之後,min為剩餘陣列的最小值,location為 最小值的位置,然後交換i和j位置上的值 }}

//遞迴選擇排序函式(從上面的非遞迴選擇排序函式改)

void

select

(int

*element,

int n,

int i)

}swap

(element+i,element+min_location)

;select

(element,n,i+1)

;//遞迴呼叫 }}

intmain

(int argc,

char

** ar**)

/**

* 遞迴冒泡法排序演算法 p(65)

**/#include

using

namespace std;

void

input

(int

*element,

int n)

void

show

(int

*element,

int n)

void

swap

(int

*p,int

*q)//非遞迴氣泡排序演算法

void

bubble

(int

* element,

int n)}}

//遞迴氣泡排序演算法

void

bubble

(int

* element,

int n,

int i)

bubble

(element,n,i+1)

;//遞迴呼叫 }}

intmain

(int argc,

char

** ar**)

/**

* 遞迴全排列演算法 p(175)

**/#include

using

namespace std;

void

swap

(int

*p,int

*q)void

show

(int

*element,

int n)

//非遞迴全排列演算法

void

dfs(

int*element,

int n)}}

//遞迴全排列演算法

void

dfs(

int*element,

int n,

int i)

for(

int j=i;jintmain()

;int n=3;

//函式呼叫

dfs(a,n)

;//程式結束

return0;

}

/**

* 遞迴fibonacci數列

**/#include

using

namespace std;

//遞迴求第n項斐波那契數的值

intfibonacci

(int n)

//遞迴求前n項的和或者求前n項的斐波那契數列都可以在上面的演算法裡修改

intmain()

演算法考試專項複習筆記2(貪心和遞迴)

設有n個活動的集合e 所有的活動要求使用同一資源,而在同一時間內只有乙個活動能使用這一資源,每個活動都有使用這一資源的開始時間si和結束時間fi,且si include include using namespace std const int n 1e5 10 typedef struct nod...

演算法 遞迴演算法

遞迴演算法的概念,就是通過不斷地呼叫自身,最終達到解決問題的目的。遞迴有兩個點需要注意 1.要不斷的呼叫自身 2.這個遞迴要有出口,不能成為死迴圈 看下面的例子。很多介紹遞迴演算法的,都會用遞迴來做乙個題目 計算乙個數的階層。例如 計算5的階層,5 5 x 4 x 3 x 2 x 1 用遞迴來實現 ...

遞迴演算法經典例項 演算法 遞迴演算法

遞迴現象 老和尚講故事 自己呼叫自己 兩面鏡子互相映像 兩者相互呼叫 演算法思想 把規模大的問題轉化為規模小的相似的子問題來解決。在函式實現時,因為解決大問題的方法和解決小問題的方法往往是同乙個方法,所以就產生了函式自己呼叫自己的情況。遞迴函式 內部操作直接或間接地呼叫了自己的函式。遞迴函式兩大要素...