递推算法是常用的算法思想,在数学计算等方面有着广泛的应用。递推算法适合有着明显公式的规律场合。

一、递推算法基本思想

递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果。递推算法的执行过程如下:

根据已知结果和关系,求解中间结果。

判断是否达到要求,如果没有达到。则继续根据已知结果和关系求解中间结果;如果满足要求,则表示寻找到一个正确的答案。

递推算法往往需要用户知道答案和问题之间的逻辑关系。在许多数学问题中,都有着明确的计算公式可以遵循,因此往往可以采用递推算法来实现。

二、递推算法实例

递推算法是基本的算法思想,常用于数学相关的场合。虾米那通过一个简单的数学例子来分析递推算法的应用。

数学里面的斐波那契数列便是一个使用递推算法的经典例子如下:

如果一对两个月大的兔子以后每一个月都可以生一对小兔子,而一对新生的兔子出生两个月后才可以生小兔子。也就是说,1月份出生,三月份才可产仔。那么假定一年内没有发生兔子死亡事件,那么1年后共有多少对兔子呢?

1、递推算法

先来分析一下兔子产仔问题,逐月分析每月兔子对数。

从上述内容可以看出,从第3个月开始,每个月的兔子总对数等于前两个月兔子数的总和。相应的计算公式(Fn=F(n-1)+F(n-2)),这里的n是第n个月,这里初始第1个月的兔子数为F1=1,F2=1。实例如下:

public static int fibonacci(int n){

int t1,t2;

if (n == 1 || n == 2){

return 1;

}else{

t1 = fibonacci(n-1);//递归调用

t2 = fibonacci(n-2);//递归调用

int num = t1 + t2;

return num;

}

}

2、递推算法求解兔子产仔问题

根据上述通用的兔子产仔问题算法,可以求解任意该类问题。下面给出完整的兔子产仔问题求解代码

public class mian1 {

/**

* 如果一对两个月大的兔子以后每一个月都可以生一对小兔子,而一对新生的兔子出生两个月后才可以生小兔子。

* 也就是说1月份出生,三月份才可产仔。那么假定一年内没有发生兔子死亡事件,那么1年后共有多少对兔子呢?

*/

public static int fibonacci(int n){

int t1,t2;

if (n == 1 || n == 2){

return 1;

}else{

t1 = fibonacci(n-1);//递归调用

t2 = fibonacci(n-2);//递归调用

int num = t1 + t2;

return num;

}

}

public static void main(String[] args) {

System.out.print("请先输入月份:");

Scanner scanner = new Scanner(System.in);

int n = scanner.nextInt();

int num = fibonacci(n);

System.out.println("经过"+n+"月的时间,共繁殖了"+num+"对兔子!");

}

}

效果如下:

请先输入月份:12

经过12月的时间,共繁殖了144对兔子!

java递推_Java算法-递推算法思想相关推荐

  1. 递推java_Java算法-递推算法思想

    递推算法是常用的算法思想,在数学计算等方面有着广泛的应用.递推算法适合有着明显公式的规律场合. 一.递推算法基本思想 递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果.递推 ...

  2. java插入法排序_java算法之插入排序法

    思想:插入排序法的思想就是从数组的第二个元素开始,将数组中的每一个元素按照规则插入到已排好序的数组中以达到排序的目的.一般情况下将数组的第一个元素作为启始元素,从第二个元素开始依次插入.由于要插入到的 ...

  3. matlab如何仿真递推型dft算法,递推dft算法

    0.7 0.8 0.9 1 0.6 0.7 0.8 0.9 1 伯格(Burg)递推算法 L-D算法缺点: 在计算相关函数估计时,对N个观测数据以 外的数据作零的假设,故谱估计误差较...... 第3 ...

  4. 【算法讲26:特征方程】求齐次线性一阶递推与二阶递推通项公式 | HDU 2021多校一 Pass!

    [算法讲26:特征方程]求一阶递推与二阶递推通项公式 引入 齐次线性一阶递推 齐次线性二阶递推 题目解法 下文中详细证明略,可以看 [数列]特征方程与特征根 引入 HDU 2021多校一 Pass! ...

  5. ( 其他算法与技巧 )【 线性递推 Berlekamp-Massey算法 】

    ( 其他算法与技巧 )[ 线性递推  Berlekamp-Massey算法 ] 原理请看:https://www.cnblogs.com/p-b-p-b/p/10844127.html 和 https ...

  6. 【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )

    文章目录 一.递推方程 内容概要 二.递推方程 定义 三.递推方程 示例 四.斐波那契数列 ( Fibnacci ) 一.递推方程 内容概要 递推方程 内容概要 : 递推方程定义 递推方程实例 常系数 ...

  7. python跳台阶_递推典型算法:猴子爬山,跳台阶,爬楼梯(牛客网)、魔法深渊(快手)----Python、Java...

    递推算法的基本思想是把一个复杂的.庞大的计算过程转化为简单过程的多次重复,其首要问题是得到相邻的数据项之间的关系,即递推关系.以猴子爬山为例. 1.问题的提出 一个顽猴在一座有30级太假的小山上爬山活 ...

  8. 函数的递推matlab,关于递推最小二乘法辨识参数的matlab编程(含注释)

    最近在做关于过热气温的动态建模问题.有现场运行的历史数据,要找出导前区和惰性区的传递函数. 对这类算法了解不多,程序读起来比较吃力,所以就转来一篇完整的辨识程序,在原有基础上进行了简化,并稍加注解一下 ...

  9. 【组合数学】递推方程 ( 常系数线性非齐次递推方程求解 | 递推方程标准型及通解 | 递推方程通解证明 )

    文章目录 一.递推方程标准型及通解 二.递推方程通解证明 一.递推方程标准型及通解 H(n)−a1H(n−1)−⋯−akH(n−k)=f(n)H(n) - a_1H(n-1) - \cdots - a ...

最新文章

  1. 电脑人会得哪些病----------关注健康,关爱生命!
  2. Nginx网站常见的跳转配置实例
  3. 基于Matlab的BP神经网络在非线性函数拟合中的应用
  4. google浏览器的地址栏(url)和文本框中英文字母都是全角
  5. mysql 计算两个日期之间的天数
  6. 详解Nginx SSL快速双向认证配置(脚本)
  7. tensorflow就该这么学--3
  8. Apache防DDOS模块mod_evasive的安装配置和使用
  9. 牛津大学计算机科学研究生几年,2020年牛津大学硕士一般几年毕业
  10. haproxy透传用户ip-方法和原理
  11. 颜色协调模型Color Harmoniztion
  12. HDU 2647 Reward 拓扑排序
  13. 区块链组织架构_区块链可以加速开放组织的5种方式
  14. Coding theano under remote ubuntu server from local Mac (在本地mac机器上,写、跑、调试、看-远程ubuntu上的theano代码)...
  15. IOMMU/SMMUV3代码分析(0)IOMMU架构
  16. Badboy下载安装超详细教程
  17. word怎么只删除英语保留汉语或删除汉语保留英文
  18. 二极管/三极管基本原理
  19. jquery九宫格抽奖转盘插件
  20. 深度篇——实例分割(三) 细说 mask rcnn 实例分割代码 训练自己数据 之 相关网络,数据处理,工具等

热门文章

  1. Mac如何设置多个桌面
  2. 中国香港实地探访外汇交易商Grand存在真实展业场所
  3. linux awk 内置函数详细介绍(实例)
  4. 时间序列模型Prophet使用详细讲解
  5. c# FileStream、StreamReader/Writer、MemoryStream
  6. 代理、网关、隧道、中继
  7. 美国龙飞船发射成功开启民间航天时代
  8. 使用谷歌浏览器Chrome://inspect调试 cordova 项目
  9. Parallel Tool In Linux安装
  10. 2017年第三届 美亚杯电子取证 团体赛 wp