递推算法

本文介绍了递推算法的基本概念,包括顺推法和逆推法,并提供了斐波拉契数列和逆向计算存款金额的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法,递推算法分为顺推和逆推两种。
**

顺推法

**
所谓顺推法是从已知条件出发,逐步推算出要解决的问题的方法叫顺推。
如斐波拉契数列,设它的函数为f(n),已知f(1)=1,f(2)=1;f(n)=f(n-2)+f(n-1)(n>=3,n∈N)。则我们通过顺推可以知道,f(3)=f(1)+f(2)=2,f(4)=f(2)+f(3)=3……直至我们要求的解。
java代码实现如下(斐波拉契数列):

public int fibonacci(int n){
        int[] f = new int[n];
        f[0]=1;
        f[1]=1;
        for(int i=2;i<n;i++){
            f[i]=f[i-1]+f[i-2];
        }
        return f[n-1];
     }

**

逆推法

**
所谓逆推法从已知问题的结果出发,用迭代表达式逐步推算出问题的开始的条件,即顺推法的逆过程,称为逆推。
若在第48月小龙大学毕业时连本带息要取1000元,则要先求出第47个月时银行存款的钱数

第47月月末存款=1000/(1+0.0171/12);

第46月月末存款=(第47月月末存款+1000)/(1+0.0171/12)

依次类推,可以求出第45月、第44月……的月末存款的数值

第45月月末存款=(第46月月末存款+1000)/(1+0.0171/12)

第44月月末存款=(第45月月末存款+1000)/(1+0.0171/12)

    ……  ……

第2月月末存款=(第3月月末存款+1000)/(1+0.0171/12)

第1月月末存款=(第2月月末存款+1000)/(1+0.0171/12)

java代码实现如下:

public float inverse(int n){
       float[] r = new float[n];
       r[n-1]=1000;
       for(int i=n-2;i>=0;i--){
           r[i]=(float) ((r[i+1]+1000.0)/(1+0.0172/12));
       }
       return r[0];
    }

所以,递归就是在过程或函数里调用自身;在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。递归的关键在于找出递归方程式和递归终止条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值