一、遞推演算法基本思想:
遞推演算法是一種理性思維模式的代表,其根據已有的資料和關係,逐步推導而得到結果。遞推演算法的執行過程如下:
1)根據已有的·結果和關係,求解中間結果
2)判定是否達到要求,如果沒有達到,則繼續根據已知結果和關係求解中間結果;如果滿足要求,則表示尋找到乙個正確的答案。
遞推演算法往往需要使用者知道答案和問題之間的邏輯關係。在許多數學問題中,都有著明確的計算公式可以遵循,因此往往可以採用遞推來實現。
2.遞推演算法示例
如果一對兩個月大的兔子以後每個月可以生一對兔子,而一對新生的兔子出生兩個月後才可以生兔子。也就是說1月份出生的3月份才能生子。假定一年內兔子沒有死亡事件,那麼一年後共有多少對兔子。
分析產仔問題,逐月分析每月的兔子對數:
第乙個月:1對兔子
第二個月:1對兔子
第三個月:2對兔子
第四個月:3對兔子
第五個月:5對兔子
第六個月:8對兔子
。。。。。。。
可以看出,從第三個月開始,每個月的兔子總隊數是前兩個月的對數之和,公式如下:
第n個月兔子總數fn = f(n-1)+f(n-2)
**示例:
publicstatic
int fibonacci(int n)
else
}
二、遞迴演算法思想:
遞迴演算法即在程式中不斷反覆呼叫自身來達到求解問題的方法。編寫遞迴演算法時,必須使用if語句強制方法在未執行遞迴呼叫前返回。如果不這樣做,在呼叫方法後,它將永遠不會返回。
缺點:遞迴演算法比非遞迴形式執行速度要慢一些。
演算法示例:
計算階乘,就是從1到指定數之間的所有自然數相乘的結果,n的階乘為:
n! = n*(n-1)*(n-2)*.......*2*1;
**:
int fact(intn)
遞迴和遞推
遞迴的概念 乙個函式 過程 概念或資料結構,如果在其定義或說明內部直接或間接地出現有其本身的引用,或者是為了描述問題的某一狀態,必須用到它的上一狀態,而描述上一狀態,又必須用到它的上一狀態 這種用自己來定義的方法,稱之為遞迴或者遞迴定義。在程式設計中,過程或函式直接或者間接呼叫自己,就稱為遞迴呼叫 ...
遞推和遞迴
貪心的思想可以用一句話來歸納,每步取優 很好理解,假設你的程式要走i 1 n共n步,那麼保證你的第i步走出的是當前這一步的最優值。這樣的解題方法叫做貪心演算法。可見貪心演算法並不是乙個全面的列舉方法而是若干結果中的一種,僅僅一種而已。但這種演算法是不是最優解它就不能完全保證了。一般每個可以使用遞迴演...
遞迴和遞推
從 1 n 這 n 個整數中隨機選取任意多個,輸出所有可能的選擇方案。輸入格式 輸入乙個整數n。輸出格式 每行輸出一種方案。同一行內的數必須公升序排列,相鄰兩個數用恰好1個空格隔開。對於沒有選任何數的方案,輸出空行。本題有自定義校驗器 spj 各行 不同方案 之間的順序任意。資料範圍 1 n 15 ...