java递归算法实例分析
作者:街灯下的小草 时间:2022-02-09 07:59:17
递归算法设计的基本思想是:
对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。
在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。
关键要抓住的是:
(1)递归出口
(2)地推逐步向出口逼近
递归就是方法自身调用自身的行为,注意要写好递归头,也就是什么时候退出递归,
避免出现死循环。
实例1,通过递归打印1~100
package com.lanhuigu.base;
public class CursionTest {
private static int i = 0;
/**
* 递归打印1到100
*/
public static void testCursion01() {
i++;
// 自增
if (i <= 100) {
// 小于等于100时回调,否则跳出回调,避免死循环
System.out.println(i);
testCursion01();
// 回调: 自身调用自身
} else {
System.out.println("Game Over!");
}
}
public static void main(String[] args) {
testCursion01();
// 打印1~100
}
}
实例2,通过递归计算某个数的阶乘
package com.lanhuigu.base;
public class CursionTest {
/**
* 递归计算某个数的阶乘
*/
public static int testFactorial(int n) {
if (n == 1) {
return 1;
} else {
return n*testFactorial(n-1);
}
}
public static void main(String[] args) {
System.out.println(testFactorial(5));
// 计算5的阶乘
}
}
关于递归计算阶乘,递归内存分析结构图:
先放长线,最后收线,然后把鱼拉上岸。
来源:http://blog.csdn.net/yhl_jxy/article/details/54976532
标签:java,递归算法
0
投稿
猜你喜欢
基于c#用Socket做一个局域网聊天工具
2023-08-17 09:36:14
Java同步函数代码详解
2022-10-13 23:22:03
在mybatis 中使用if else 进行判断的操作
2021-11-10 23:17:11
JAVA使用JDBC连接oracle数据库的详细过程
2021-11-20 19:20:19
Java Swing JComboBox下拉列表框的示例代码
2022-09-16 00:24:50
javaweb中Filter(过滤器)的常见应用
2023-07-10 23:57:36
Android实现自定义的卫星式菜单(弧形菜单)详解
2023-03-03 14:16:51
Android中在GridView网格视图上实现item拖拽交换的方法
2022-07-13 01:26:04
springboot打包部署到linux服务器的方法
2021-09-26 14:56:14
Java中的装箱和拆箱深入理解
2023-02-22 08:18:10
Android studio报: java.lang.ExceptionInInitializerError 错误
2022-08-14 14:21:30
轻松学习C#的String类
2021-06-21 02:03:06
Java程序员应该遵守的10条纪律
2022-07-16 22:47:41
一文带你了解SpringBoot的启动原理
2023-11-28 20:44:42
Java 1.8使用数组实现循环队列
2022-02-11 04:00:10
IntelliJ IDEA 安装教程2019.09.23(最新版)
2023-08-24 23:01:44
基于jQuery获取table数据发送到后端
2023-07-22 22:07:43
Java多线程产生死锁的必要条件
2023-04-02 00:20:24
eclipse的git插件安装、配置与使用详解
2021-07-23 10:04:47
springboot使用事物注解方式代码实例
2022-07-09 00:13:21