演算法設計 之 遞推法

2022-03-27 17:32:46 字數 1220 閱讀 8882

遞推法就是根據已知條件,分析推導出問題中的聯絡,然後一步一步進行推倒直至得到結果。

根據具體問題我們需要選擇是正推還是逆推來解決問題。

下面先舉乙個遞推中的經典例子,就是求兔子數量的問題:

現有乙隻乙個月大的兔子,已知當兔子在第三個月大時每月就可以生下乙隻小兔子(好吧,就按兔子是無性繁殖的),求一年後兔子的總數量。

我們根據問題分析,發現可以把兔子分三類:乙個月大、二個月大、三個或三個以上月大,列表分析:

月份1月大

2月=3月大11

0020

1031

0141

1152

12……根據上面圖表分析可知:

下月「一月大」的兔子數量等於上月「2月大」+上月「>=3月大」的兔子數量;

下月「二月大」的兔子數量等於上月「一月大」的兔子數量;

下月「>=3月大」的兔子數量等於上月「二月大」+上月「>=3月大」的兔子數量;

既然分析完問題,**就很簡單了:

///

///遞推(正推)計算兔子的數量

///public

static

void

showrabbitscount()

個月兔子的總數為:

", month, onemonthcount + twomonthcount +threeormoremonthcount));}}

執行結果:

下面再看乙個逆推的例子:

假設有乙個人從1月份開始到本年12月初時體重減少到150斤,他每個月增加的體重為當月初體重的2%,每月鍛鍊減少的體重為10斤(這裡也按這10斤是月底突然減掉的

),計算此人一月初時的體重。

根據問題分析:

12月初的體重為150斤,然後: 本月初體重+10=上月初體重*1.02

///

///遞推(逆推)計算開始時的體重

///public

static

void

showweight()

個月的開始體重為:

", month, prestartweight));}}

執行結果:

基礎演算法之遞推法

一.倒推法 例1 儲油點 每次送油到儲存點,因為每次從n 1處出發至n處時都是攜帶500公升油,往返次數越少說明花掉的油最少。int main int k,d k為儲油點位置序號,d為累計終點至當前儲油點的距離 int oil 10 dis 10 儲油點的油量和離終點的距離 int i 輔助變數 k...

常用演算法設計方法 三 遞推法

遞推法是利用問題本身所具有的一種遞推關係求問題解的一種方法。設要求問題規模為n的解,當n 1時,解或為已知,或能非常方便地得到解。能採用遞推法構造演算法的問題有重要的遞推性質,即當得到問題規模為i 1的解後,由問題的遞推性質,能從已求得的規模為1,2,i 1的一系列解,構造出問題規模為i的解。這樣,...

常用演算法 遞推法

遞推法是利用問題本身所具有的一種遞推關係求問題解的一種方法。設要求問題規模為n的解,當n 1時,解或為已知,或能非常方便地得到解。能採用遞推法構 造演算法的問題有重要的遞推性質,即當得到問題規模為i 1的解後,由問題的遞推性質,能從已求得的規模為1,2,i 1的一系列解,構造出問題規模為 i的解。這...