• 数据结构与算法之递推算法 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] << "仅仅
    ";
        }
        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] << " 元
    ";
        }
        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++编译执行结果



  • 相关阅读:
    SpringMvc 框架
    面试:你最大的长处和弱点分别是什么?这些长处和弱点对你在企业的业绩会有什么样的影响?
    线程、并发、并行、进程是什么,以及如何开启新的线程?
    面向对象三大特性
    一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
    JavaScript 引擎
    Spring Data JPA简介 Spring Data JPA特点
    redo log 有什么作用?
    Spring的简介和优点?
    学习笔记——享元模式Flyweight
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4260495.html
Copyright © 2020-2023  润新知