算法思想学习--递推

分为两类:

  1. 顺推法:从已知条件出发,逐步推算出要解决问题的方法。
  2. 逆推法:从已知结果出发,用迭代表达式逐步推算出问题开始的条件,即顺推法的你过程。
    来举两个例子:

题目 (顺推法)

斐波那契数列(Fibonacci sequence),又称黄金分割数列

求斐波那契数列的第 n 项。
在这里插入图片描述

public class Fibonacci {
	public int Fn(int n) {
		int F1 = 0;
		int F2 = 1;
		int sum = 0;
		if(n == 0){return 0;}
		if(n == 1) {return 1;} 
		for (int i = 2;i < n;i++ ) {
			sum = F1 + F2;
			F1 = F2;
			F2 = sum;
		}
		return sum;
	}
}

题目 (逆推法)

银行存款问题
问题描述:母亲为儿子sun 4年的大学生活准备了一笔存款,方式是整取零存,规定sun 每个月月底取下一个月的生活费。假设银行年利息为1.71%,计算该母亲每个月至少要存入多少钱?这是原题,可是我觉得应该是母亲要至少要存入多少钱,没有“每个月”,如有错误,还请各位大佬提醒,我加以改正

算法分析:可采用逆推法分析存钱和取钱的过程,因为按照月为周期取钱,所以4年可以分为48个月,并对每个月进行计算。
如果第48个月后sun大学毕业连本带息要取1000元,则要求第47个月银行的存钱金额为:
第47个月月末存款=1000/(1+0.0172/12);
第46个月月末存款=(第47存款+1000)/(1+0.0172/12); //为什么加第47个月的存款呢,我们第46个月要取出1000块钱还要剩余第47个月的存款,也就是说我们取钱的时候是1000+第47个月的存款。
第45月末存款=(第46存款+1000)/(1+0.0172/12);//以此类推
…….
第2月月末存款=(第3月月末存款+1000)/(1+0.0172/12);
第1月月末存款=(第2月末存款+1000)/(1+0.0172/12);
代码实现:

public class BankAccount {
	private final static double FETCH = 1000;
	private final static double RATE = 0.0171;
	public static void main(String[] args) {
		BankAccount account = new BankAccount();
		account.Count();
	}
	public void Count() {
	    double[] list = new double[48];
	    list[47] = FETCH;
	    System.out.println("第48个月月末存款为"+list[47]);
		for(int i = 46; i >= 0 ; i--) {
			list[i] = (list[i+1] + FETCH)/(1+RATE/12);
			int n = i+1;
			System.out.println("第"+n+"个月月末存款为"+list[i]);
		}
	}
}

效果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
递推最小二乘算法(PK)是一种用于非线性参数估计的统计方法。该方法通过迭代的方式,利用最小二乘法来求解参数估计的问题。递推最小二乘算法结合了线性化和递推两种技术,能够有效地处理非线性模型参数的估计。 递推最小二乘算法的步骤如下:首先,根据给定的初始参数估计值,将非线性模型线性化,得到线性近似模型。然后,使用最小二乘估计法求解线性近似模型的参数估计。接下来,将线性近似模型的参数估计结果应用到原始非线性模型中,并更新模型的参数估计值。然后,重复以上步骤,直至收敛或达到预设的停止条件。 递推最小二乘算法的优点是能够获得较好的参数估计结果,尤其适用于非线性模型。它的核心思想是通过反复线性化和迭代求解,逐步逼近最优解。这种迭代的方式可以提高估计的准确性和稳定性,并能够处理一些非线性模型无法直接求解的情况。但是,由于需要进行迭代计算,算法的收敛速度较慢,计算成本较高。 总之,递推最小二乘算法是一种强大且灵活的非线性参数估计方法,它通过迭代的方式逐步逼近最优解。通过将非线性模型线性化,并利用最小二乘估计法求解线性近似模型的参数估计,再应用到原始非线性模型中,实现对参数的估计。该方法在实际应用中具有广泛的应用领域,例如信号处理、机器学习等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值