動(dòng)態(tài)規(guī)劃認(rèn)為是遞歸的反向技術(shù),遞歸的效率低下。
斐波那契數(shù)列? 0? , 1,2,3,5 , 8,13,21,34
?
static?long?recurFib(int?n)?
{
if?(n?<?2)
????????return?n;
else
????????return?recurFib(n?-?1)?+?recurFib(n?-?2);
}
?
?
動(dòng)態(tài)規(guī)劃版本?
?
????static?long?iterFib(int?n)
????{
????????int[]?val?=?new?int[n];
????????if?((n?==?1)?||?(n?==?2))
????????????return?1;
????????else
????????{
????????????val[1]?=?1;
????????????val[2]?=?2;
????????????for?(int?i?=?3;?i?<=?n?-?1;?i++)
????????????????val[i]?=?val[i?-?1]?+?val[i?-?2];
????????}
????????return?val[n?-?1];
}
?
static?void?Main()
{
Timing?tObj?=?new?Timing();
????Timing?tObj1?=?new?Timing();
????int?num?=?35;
????long?fibNumber;
????tObj.startTime();
????fibNumber?=?recurFib(num);
????tObj.stopTime();
????Console.WriteLine("Calculating?Fibonacci?number:?"?+?num);
????Console.WriteLine(fibNumber?+?"?in:?"?+?tObj.Result().TotalMilliseconds);
????tObj1.startTime();
????fibNumber?=?iterFib(num);
????tObj1.stopTime();
????Console.WriteLine(fibNumber?+?"?in:?"?+?tObj1.Result().TotalMilliseconds);
}
隨著數(shù)字增大,效率差距很大。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
