動態規劃認為是遞歸的反向技術,遞歸的效率低下。
斐波那契數列? 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);
}
?
?
動態規劃版本?
?
????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);
}
隨著數字增大,效率差距很大。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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