今天接触了一下递归, 一开始听的时候不知道啥意思, 只是按照答案代码抄下来, 就能实现自己的目的, 在网上看了一下感觉也不是很难理解
但是说实话要是想用的很熟练, 就不是一件简单的事情了
首先来看一段代码, 求一个数字的阶乘的
public class qqq { //计算一个数字的阶乘 private static int fact(int a) { //1的阶乘本来就是1, 这里直接返回 if(a==1) { return a; } else { return (a * fact(a-1)); } } public static void main(String[] args) { System.out.println(fact(6)); } }
递归在很大程度上类似于循环, 但又不是循环, 递归是有去有回, 循环是有去无回, 很多情况下递归可以是代码更简单, 也更让人容易理解(这点倒是真没发现...),
再看一下这张图片
这就是用递归算法算一个数字的阶乘的过程图
原理就是
6的阶乘==6乘以5的阶乘
5的阶乘==5乘以4的阶乘
4的阶乘==4乘以3的阶乘
3的阶乘==3乘以2的阶乘
2的阶乘==2乘以1的阶乘
1的阶乘==1
依次往上就有了这么个东西:
6的阶乘==6乘以5乘以4乘以3乘以2乘以1............
于是6的阶乘就算出来了