java递归算法实例分析
2017-12-12 09:02
477 查看
递归算法设计的基本思想是:
对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。
在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。
关键要抓住的是:
(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递归算法实例分析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- java递归算法实例和分析
- C++中重载、重写(覆盖)和隐藏的区别实例分析
- 自适应 Adapter http live streaming 流媒体实例分析
- 正则表达式实例分析(转)
- Java矩阵连乘问题(动态规划)算法实例分析
- C++编译器无法捕捉到的8种错误实例分析
- jsonp跨域请求数据实现手机号码查询实例分析
- C#清理非托管对象实例分析
- 通过实例及源码分析关于SpringBoot启动类启动时自动配置问题
- 强大的Web日志分析工具_AWSTATS 应用实例
- Linux内核IOCTL网络控制框架实现实例分析
- Camera图像处理原理及实例分析
- C库中重要字符串函数的简要分析及实例
- [dts]DTS实例分析
- Python内置模块logging用法实例分析
- CSS Specificity--CSS特性、权重、优先级---CSS specificity规则、算法及实例分析
- Webkit自带谷歌浏览器实例分析(3)
- python中偏函数partial用法实例分析
- ZIP压缩算法详细分析及解压实例解释