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的阶乘
}
}

关于递归计算阶乘,递归内存分析结构图:

java递归算法实例分析

先放长线,最后收线,然后把鱼拉上岸。

来源: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
  • asp之家 软件编程 m.aspxhome.com