我就不吃芹菜

导航

 

  今天接触了一下递归, 一开始听的时候不知道啥意思, 只是按照答案代码抄下来, 就能实现自己的目的, 在网上看了一下感觉也不是很难理解

  但是说实话要是想用的很熟练, 就不是一件简单的事情了

  首先来看一段代码, 求一个数字的阶乘的

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的阶乘就算出来了

posted on 2015-12-20 21:40  我就不吃芹菜  阅读(254)  评论(0编辑  收藏  举报