遞推和遞迴

2021-09-07 06:14:49 字數 990 閱讀 9923

一、遞推演算法基本思想:

遞推演算法是一種理性思維模式的代表,其根據已有的資料和關係,逐步推導而得到結果。遞推演算法的執行過程如下:

1)根據已有的·結果和關係,求解中間結果

2)判定是否達到要求,如果沒有達到,則繼續根據已知結果和關係求解中間結果;如果滿足要求,則表示尋找到乙個正確的答案。

遞推演算法往往需要使用者知道答案和問題之間的邏輯關係。在許多數學問題中,都有著明確的計算公式可以遵循,因此往往可以採用遞推來實現。

2.遞推演算法示例

如果一對兩個月大的兔子以後每個月可以生一對兔子,而一對新生的兔子出生兩個月後才可以生兔子。也就是說1月份出生的3月份才能生子。假定一年內兔子沒有死亡事件,那麼一年後共有多少對兔子。

分析產仔問題,逐月分析每月的兔子對數:

第乙個月:1對兔子

第二個月:1對兔子

第三個月:2對兔子

第四個月:3對兔子

第五個月:5對兔子

第六個月:8對兔子

。。。。。。。

可以看出,從第三個月開始,每個月的兔子總隊數是前兩個月的對數之和,公式如下:

第n個月兔子總數fn = f(n-1)+f(n-2)

**示例:

public

static

int fibonacci(int n)

else

}

二、遞迴演算法思想:

遞迴演算法即在程式中不斷反覆呼叫自身來達到求解問題的方法。編寫遞迴演算法時,必須使用if語句強制方法在未執行遞迴呼叫前返回。如果不這樣做,在呼叫方法後,它將永遠不會返回。

缺點:遞迴演算法比非遞迴形式執行速度要慢一些。

演算法示例:

計算階乘,就是從1到指定數之間的所有自然數相乘的結果,n的階乘為:

n! = n*(n-1)*(n-2)*.......*2*1;

**:

int fact(int

n)

遞迴和遞推

遞迴的概念 乙個函式 過程 概念或資料結構,如果在其定義或說明內部直接或間接地出現有其本身的引用,或者是為了描述問題的某一狀態,必須用到它的上一狀態,而描述上一狀態,又必須用到它的上一狀態 這種用自己來定義的方法,稱之為遞迴或者遞迴定義。在程式設計中,過程或函式直接或者間接呼叫自己,就稱為遞迴呼叫 ...

遞推和遞迴

貪心的思想可以用一句話來歸納,每步取優 很好理解,假設你的程式要走i 1 n共n步,那麼保證你的第i步走出的是當前這一步的最優值。這樣的解題方法叫做貪心演算法。可見貪心演算法並不是乙個全面的列舉方法而是若干結果中的一種,僅僅一種而已。但這種演算法是不是最優解它就不能完全保證了。一般每個可以使用遞迴演...

遞迴和遞推

從 1 n 這 n 個整數中隨機選取任意多個,輸出所有可能的選擇方案。輸入格式 輸入乙個整數n。輸出格式 每行輸出一種方案。同一行內的數必須公升序排列,相鄰兩個數用恰好1個空格隔開。對於沒有選任何數的方案,輸出空行。本題有自定義校驗器 spj 各行 不同方案 之間的順序任意。資料範圍 1 n 15 ...