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

一、递推算法基本思想

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

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

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

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

二、递推算法实例

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

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

如果一对两个月大的兔子以后每一个月都可以生一对小兔子,而一对新生的兔子出生两个月后才可以生小兔子。也就是说,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. matlab如何仿真递推型dft算法,递推dft算法

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 【组合数学】二项式定理与组合恒等式 ( 二项式定理 | 三个组合恒等式 递推式 | 递推式 1 | 递推式 2 | 递推式 3 帕斯卡/杨辉三角公式 | 组合分析方法 | 递推式组合恒等式特点 )

    文章目录 一.二项式定理 二.组合恒等式 ( 递推式 1 ) 三.组合恒等式 ( 递推式 2 ) 四.组合恒等式 ( 递推式 3 ) 帕斯卡 / 杨辉三角公式 五.组合分析方法 六.递推式组合恒等式特 ...

最新文章

  1. Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)
  2. python的运行窗口-Python初学——窗口视窗Tkinter
  3. hdu 5059 判断数字表示方式以及范围合法(int型之内)
  4. python数据库操作pymysql
  5. 线程、进程、程序区别
  6. 使用Flyway在Java EE中进行数据库迁移
  7. Android 应用更新和在服务器下载android应用
  8. java日期工具类DateUtil
  9. Gradle实战-配置环境变量
  10. UE3 渲染线程的分析及优化
  11. cmake release和debug代码运行效果不一样_这35个小细节,让你的Java 代码运行效率翻倍!...
  12. 【iOS】TouchDown、TouchDownRepeat 和 TouchCancel 的区别
  13. WebStrom 使用淘宝镜像
  14. MATLAB图像分割系统设计
  15. 软件工程——软件维护
  16. mro python_Python之super与MRO
  17. python怎么算列表的平方_Python中排序形式的元素的平方列表
  18. 众筹一个报名签到平台的设计思路(一)——业务需求篇
  19. Linux0.11 execve函数(六)
  20. manjaro安装搜狗拼音

热门文章

  1. Z-Stack中HalUARTWrite的使用以及osal_strlen()的使用
  2. 大数据开发之Hive篇15-Hive之hpl/sql编程
  3. Fisher线性分类器和贝叶斯决策
  4. Windows 2003 服务器目录安全权限设置
  5. 查询速度慢的原因很多(转载)
  6. Cypress(二)Cypress相关介绍
  7. 配资平台揭秘!主力套路散户的方法?
  8. 如何把uboot从SD卡烧到emmc
  9. android开发中,手把手教你root Android系统
  10. POJ-1990-MooFest