什么是递归
- A方法调用B方法,我们很容易理解
- 递归:A方法调用B方法,就是自己调用自己
递归简介
利用递归可以使用简单的出现来解决一些复杂的问题,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模比较小的问题,递归策略只需要少量的程序就可以描述处解题过程所需要的重复计算,大大减少了程序代码量,递归的能力在于用有限的语句来定义对象无限的集合。
递归结构包括两个部分:
- 递归头:什么时候不调用自身的方法。如果没有头,将陷入死循环。头是尽头的意思。
- 递归体:什么时候需要调用自身方法
测试递归
测试一
这种使用方式是错误的。
1 | package com.asher; |
输出结果:会出现错误,栈溢出的错误。
测试二
实例
1 | public class TestDemoRecursion { |
返回结果:
分析结果:
边界条件:边界值(n==1)
前阶段:f(n)
返回阶段:n*(n-1)
缺点:能不用递归则不用递归,基数比较小的时候可以考虑递归用法