遞迴演算法實現

2021-08-01 10:08:04 字數 2281 閱讀 9376

遞迴演算法

1、乙個人趕著鴨子去每個村莊賣,每經過乙個村子賣去所趕鴨子的一半又乙隻。這樣他經過了七個村子後還剩兩隻鴨子,問他出發時共趕多少只鴨子?經過每個村子賣出多少只鴨子?

題目分析:

遞迴終止的條件是到第7個村莊時遞迴停止

演算法構造

:定義遞迴函式f(n),  當 n=8時

,剩餘2只鴨子,;當 0時

,總共趕num =(f(n+1)+1)*2只鴨子,賣出num/2+1只鴨子

程式**

://題目:遞迴演算法解決賣鴨子問題

//作者 :軟工1508010206 白瑜

//時間 : 2017/05/20

#include int f(int n)

else

return num;

} int main()

執行結果截圖:

2、角谷定理。輸入乙個自然數,若為偶數,則把它除以2,若為奇數,則把它乘以3加1。經過如此有限次運算後,總可以得到自然數值1。求經過多少次可得到自然數1

題目分析

:遞迴的終止條件是最後值為1;先對輸入的數n 進行判斷,若 n = 1,則輸出1;若輸入的數為偶數, 則把它除以2;若為奇數則乘3加1;直到n = 1為止;

演算法構造:

n=1 時, 輸出1;若n%2==0(n為偶數)時,n = n/2;若n%2==1(n為奇數)時,n = 3*n+1

程式**:

//題目:遞迴演算法之角谷定理

//作者 :軟工1508010206 白瑜

//時間 : 2017/05/20

#includeint jg(int n,int step)  //定義遞迴函式,引數為數字和步驟數

else if (n % 2 == 1)

return jg(n, step + 1);

} else

printf("\nstep=%d\n",step);//輸出步驟數

} //主函式

int main()

執行結果截圖:

3.**號碼對應的字元組合:在**或者手機上,乙個數字如2對應著字母abc,7對應著pqrs。那麼數字串27所對應的字元的可能組合就有3*4=12種(如ap,br等)。現在輸入乙個3到11位長的**號碼,請列印出這個**號碼所對應的字元的所有可能組合和組合數。  題目

分析:在這裡,遞迴出口是,當輸入的是乙個數字時,返回這個數字所有可能性的組合,遞迴體是當輸入一串數字,每個數字代表不同的字串,返回最後乙個數字跟前面已產生的字串進行組合

演算法構造

:首先建乙個陣列,用來存放每個數字代表的字串組合,然後再建乙個陣列,用來存放每個字串的長度

程式**:

//題目:遞迴演算法解決**號碼對應的字元組合的

問題//作者 :軟工1508010206 白瑜

//時間 : 2017/05/20

#includeusing namespace std;

char* letter[10]=;

int num[10]=;

char input[15];

char output[15];

void sl(int t,int length)

else

}for(i=0;i<6;i++) {

cout<

執行結果截圖:

5.經驗歸納

遞迴是一種程式設計方法,更恰當的說是一

種技巧。既然是技巧就會有一些問題,那就是當用得合適時,會有事半功倍的效果,但大多數情況下這種技巧是不適合的。遞迴程式相比於一般的迭代程式會有更多的程式開銷,所以在使用遞迴前要衡量好簡化**和增加開銷之間的關係。

經過這幾個遞迴例題,我認為要寫好乙個遞迴演算法,主要把握以下幾點:首先要從題目中提取出重複的邏輯,這個邏輯需要乙個框架保證其可以遞迴執行,其次就是控制邏輯邊界,保證程式在正確的框架下執行,最後就是合適的退出遞迴,遞迴的退出往往和邏輯邊界相輔相成,掌握了以上幾點,可以讓我們在遞迴演算法中少走很多彎路,從而使得程式更加簡單方便。

python遞迴實現 遞迴演算法 python實現

在函式的定義中對這個函式自身的呼叫,就是遞迴。遞迴結構中,遞迴的部分必須比原來的整體簡單,才有可能到達某種終結點 出口 而且必須存在非遞迴的基本結構構成的部分,否則會無限遞迴。學習目標 程式設計實現斐波那契數列求值 f n f n 1 f n 2 程式設計實現求階乘 n 程式設計實現一組資料集合的全...

python實現遞迴演算法

usr bin env python coding utf 8 def recursive 1 n 樓梯有n階台階,上樓可以一步上3階,也可以一步上5階,計算共有多少種不同的走法?設n階台階的走法數為f n 如果台階數小於等於3,走法有2種 一步上3個台階或者5個台階 即f n 3 2 如果台階數為...

Python 實現遞迴演算法

1 遞迴的定義 遞迴就是子程式 或函式 直接呼叫自己或通過一系列呼叫語句間接呼叫自己,是一種描述問題和解決問題的基本方法。遞迴常與分治思想同時使用,能產生許多高校的演算法。遞迴常用來解決結構相似的問題。所謂結構相似,是指構成原問題的子問題與原問題在結構上相似,可以用類似的方法解決。具體地,整個問題的...