【Java编程】递归的使用

来源:互联网 发布:淘宝土蜂蜜240一斤贵吗 编辑:程序博客网 时间:2024/06/13 20:51

今天来说一下递归,什么是递归?

其实说白了递归就是一个方法自己调用自己,这就是递归,那么递归怎么使用的,他又有什么优点呢?

递归可以说没有什么优点,要说有把勉强算有一个吧,代码简洁,其他的我还真没想出来递归有什么优点,但是递归的缺点到是不少,执行速度慢,占内存,可以说是效率低下,但是为什么还要用递归的,其实有时递归还是有些用处的。

递归一个不断循环调自方式,递归可以做的事,循环都可以做,递归不可以做的事,循环也能做。

下面给出一个递归学习的经典案例,使用递归计算阶乘。

代码如下:

public class Test {// 使用递归计算阶乘// 定义一个方法public static int recursion(int n){//如果n==1那么直接返回1,,否则就再次调用自己if(n==1){return 1;}else{return n*recursion(n-1);// 每调用一次n就减1}}public static void main(String[] args) {int a=recursion(5);//把返回结果赋值给aSystem.out.println(a);// 打印结果}}

我们来分析一下原理:

首先我们通过了main方法传入了一个值5,5到方法里面就是n。这是第一次调用,然后5!=n我们走到了else里执行了n*recursion(n-1);在此我们又进行了一次调用,这是第二次,因为减1,所以n=4,4!=1继续调用n*recursion(n-1);这又是一次调用,以此类推当n==1时返回1,因为需要返回值,所以前面的方法还在等着,这时返回1,那么上一次调用就是2*1,然后把2*1的值有返回,变成3*2继续返回4*6,在继续返回5*24,所以最终的结果是120

看图:



原创粉丝点击