递推java_Java算法-递推算法思想
递推算法是常用的算法思想,在数学计算等方面有着广泛的应用。递推算法适合有着明显公式的规律场合。
一、递推算法基本思想
递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果。递推算法的执行过程如下:
根据已知结果和关系,求解中间结果。
判断是否达到要求,如果没有达到。则继续根据已知结果和关系求解中间结果;如果满足要求,则表示寻找到一个正确的答案。
递推算法往往需要用户知道答案和问题之间的逻辑关系。在许多数学问题中,都有着明确的计算公式可以遵循,因此往往可以采用递推算法来实现。
二、递推算法实例
递推算法是基本的算法思想,常用于数学相关的场合。虾米那通过一个简单的数学例子来分析递推算法的应用。
数学里面的斐波那契数列便是一个使用递推算法的经典例子如下:
如果一对两个月大的兔子以后每一个月都可以生一对小兔子,而一对新生的兔子出生两个月后才可以生小兔子。也就是说,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算法-递推算法思想相关推荐
- java递推_Java算法-递推算法思想
递推算法是常用的算法思想,在数学计算等方面有着广泛的应用.递推算法适合有着明显公式的规律场合. 一.递推算法基本思想 递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果.递推 ...
- matlab如何仿真递推型dft算法,递推dft算法
0.7 0.8 0.9 1 0.6 0.7 0.8 0.9 1 伯格(Burg)递推算法 L-D算法缺点: 在计算相关函数估计时,对N个观测数据以 外的数据作零的假设,故谱估计误差较...... 第3 ...
- 【算法讲26:特征方程】求齐次线性一阶递推与二阶递推通项公式 | HDU 2021多校一 Pass!
[算法讲26:特征方程]求一阶递推与二阶递推通项公式 引入 齐次线性一阶递推 齐次线性二阶递推 题目解法 下文中详细证明略,可以看 [数列]特征方程与特征根 引入 HDU 2021多校一 Pass! ...
- ( 其他算法与技巧 )【 线性递推 Berlekamp-Massey算法 】
( 其他算法与技巧 )[ 线性递推 Berlekamp-Massey算法 ] 原理请看:https://www.cnblogs.com/p-b-p-b/p/10844127.html 和 https ...
- 【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )
文章目录 一.递推方程 内容概要 二.递推方程 定义 三.递推方程 示例 四.斐波那契数列 ( Fibnacci ) 一.递推方程 内容概要 递推方程 内容概要 : 递推方程定义 递推方程实例 常系数 ...
- python跳台阶_递推典型算法:猴子爬山,跳台阶,爬楼梯(牛客网)、魔法深渊(快手)----Python、Java...
递推算法的基本思想是把一个复杂的.庞大的计算过程转化为简单过程的多次重复,其首要问题是得到相邻的数据项之间的关系,即递推关系.以猴子爬山为例. 1.问题的提出 一个顽猴在一座有30级太假的小山上爬山活 ...
- 函数的递推matlab,关于递推最小二乘法辨识参数的matlab编程(含注释)
最近在做关于过热气温的动态建模问题.有现场运行的历史数据,要找出导前区和惰性区的传递函数. 对这类算法了解不多,程序读起来比较吃力,所以就转来一篇完整的辨识程序,在原有基础上进行了简化,并稍加注解一下 ...
- 【组合数学】递推方程 ( 常系数线性非齐次递推方程求解 | 递推方程标准型及通解 | 递推方程通解证明 )
文章目录 一.递推方程标准型及通解 二.递推方程通解证明 一.递推方程标准型及通解 H(n)−a1H(n−1)−⋯−akH(n−k)=f(n)H(n) - a_1H(n-1) - \cdots - a ...
- 【组合数学】二项式定理与组合恒等式 ( 二项式定理 | 三个组合恒等式 递推式 | 递推式 1 | 递推式 2 | 递推式 3 帕斯卡/杨辉三角公式 | 组合分析方法 | 递推式组合恒等式特点 )
文章目录 一.二项式定理 二.组合恒等式 ( 递推式 1 ) 三.组合恒等式 ( 递推式 2 ) 四.组合恒等式 ( 递推式 3 ) 帕斯卡 / 杨辉三角公式 五.组合分析方法 六.递推式组合恒等式特 ...
最新文章
- Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)
- python的运行窗口-Python初学——窗口视窗Tkinter
- hdu 5059 判断数字表示方式以及范围合法(int型之内)
- python数据库操作pymysql
- 线程、进程、程序区别
- 使用Flyway在Java EE中进行数据库迁移
- Android 应用更新和在服务器下载android应用
- java日期工具类DateUtil
- Gradle实战-配置环境变量
- UE3 渲染线程的分析及优化
- cmake release和debug代码运行效果不一样_这35个小细节,让你的Java 代码运行效率翻倍!...
- 【iOS】TouchDown、TouchDownRepeat 和 TouchCancel 的区别
- WebStrom 使用淘宝镜像
- MATLAB图像分割系统设计
- 软件工程——软件维护
- mro python_Python之super与MRO
- python怎么算列表的平方_Python中排序形式的元素的平方列表
- 众筹一个报名签到平台的设计思路(一)——业务需求篇
- Linux0.11 execve函数(六)
- manjaro安装搜狗拼音