數據結構與算法之遞推算法 C++與PHP實現

數據結構是算法實現的基礎,算法總是要依賴於某種數據結構來實現的。往往是在發展一種算法的時候,構建了適合於這種算法的數據結構。一種數據結構如果脫離了算法,也就沒有存在的價值了。
算法的作用----解決任何一個實際問題,都不可避免地涉及到算法的問題,通過一定的算法,得到一個最優(或較優)的方案。
遞推算法:遞推算法是一種簡單的算法,即通過已知條件,利用特定關係得出中間推論,直至得到結果的算法。
順推法:從已知條件出發,逐步推算出要解決的問題的方法。
逆推法:從已知問題的結果出發,用迭代表達式逐步推算出問題的開始的條件,即順推法的逆過程。

順推實例:
兔子繁殖過程

c++代碼:
#include<iostream>
int main()
{
    using namespace std;
    const int NUM = 13;
    int count = 0;
    int rabbit[NUM] = {1,1};
    for (int i=0; i<NUM-2; i++)
    {
        rabbit[i+2] = rabbit[i] + rabbit[i+1];
    }
    for (int j=0; j<NUM; j++)
    {
        cout << j << "月兔子總數: " << rabbit[j] << "只\n";
    }
    return 0;
}
php代碼:
<?php
   $rabbit = array();
   $rabbit[1] = $rabbit[0] =1;
   define("MONTH", 12);
   for ($i=2; $i<=MONTH; $i++) {
       $rabbit[$i] = $rabbit[$i-2] + $rabbit[$i-1];
   }
   for ($i=0; $i<=MONTH; $i++) {
       echo "第 " . $i . " 月,兔子總數量爲:". $rabbit[$i] . "只<br/>";
   }
?>
C++編譯運行結果


逆推實例
父親準備爲小龍的四年大學生活一次性儲蓄一筆錢,使用整存零取的方式,控制小龍每月月底取1000元準備下月使用。假設銀行整存領取的年息爲1.71%,請算出父親至少需要存入多少錢纔行。
c++代碼:
#include<iostream>
int main()
{
    using namespace std;
    const double RATE = 0.0171;
    double money[48];
    money[47] = 1000;
    for (int i=47; i>0; i--)
    {
        money[i-1] = (money[i] + 1000)/(1+RATE/12);
    }
    for (int j=47; j>0; j--)
    {
        cout << "第 " << j << " 月本利合計爲: " << money[j] << " 元\n";
    }
    return 0;
}

php代碼:
<?php
    $month = array();
 $month[47] = 1000;
 define("RATE", 0.0171);
 for ($i=47; $i>0; $i--) {
     $month[$i-1] = ($month[$i] + 1000)/(1+RATE/12);
 }
 for ($i=47; $i>0; $i--) {
     echo "第 " . $i . " 月本息合計爲:" . $month[$i] . "元<br />";
 }
?>
C++編譯運行結果



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章