java递归算法实例分析

 更新时间:2017年12月12日 09:02:06   作者:街灯下的小草  
这篇文章主要介绍了java递归算法实例分析,具有一定借鉴价值,需要的朋友可以参考下。

递归算法设计的基本思想是:

对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。

在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。

关键要抓住的是:

(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递归算法实例分析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • 一篇超详细的SpringBoot整合MybatisPlus的文章

    一篇超详细的SpringBoot整合MybatisPlus的文章

    这篇文章主要介绍了springboot整合Mybatis-plus的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • Eclipse 2022 设置中文汉化的超详细图文教程

    Eclipse 2022 设置中文汉化的超详细图文教程

    这篇文章主要介绍了Eclipse 2022 设置中文汉化的超详细图文教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 如何开发基于Netty的HTTP/HTTPS应用程序

    如何开发基于Netty的HTTP/HTTPS应用程序

    HTTP/HTTPS是最常见的协议套件之一,并且随着智能手机的成功,它的应用也日益广泛,因为对于任何公司来说,拥有一个可以被移动设备访问的网站几乎是必须的。下面就来看看如何开发基于Netty的HTTP/HTTPS应用程序
    2021-06-06
  • Java用数组实现循环队列的示例

    Java用数组实现循环队列的示例

    下面小编就为大家带来一篇Java用数组实现循环队列的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • MybatisPlus开启、关闭二级缓存方法

    MybatisPlus开启、关闭二级缓存方法

    本文主要介绍了MybatisPlus开启、关闭二级缓存方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Java使用cookie显示最近查看过的书

    Java使用cookie显示最近查看过的书

    这篇文章主要为大家详细介绍了Java使用cookie显示最近查看过的书,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • JSON的String字符串与Java的List列表对象的相互转换

    JSON的String字符串与Java的List列表对象的相互转换

    这篇文章主要介绍了JSON的String字符串与Java的List列表对象的相互转换,如果在浏览器端JSON是list则转为string结构来处理,需要的朋友可以参考下
    2016-04-04
  • EVCache缓存在Spring Boot中的实战示例

    EVCache缓存在Spring Boot中的实战示例

    这篇文章主要介绍了EVCache缓存在Spring Boot中的实战示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 彻底理解Java中的ThreadLocal

    彻底理解Java中的ThreadLocal

     ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。使用这个工具类可以很简洁地编写出优美的多线程程序。 接下来通过本文给大家介绍Java中的ThreadLocal,需要的朋友可以参考下
    2017-03-03
  • Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔断的示例

    Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔断的示例

    这篇文章主要介绍了Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔断的示例,帮助大家更好的理解和学习使用Spring Cloud,感兴趣的朋友可以了解下
    2021-03-03

最新评论