Java浅谈递归的理解

      递归方法其实就是一个直接或者间接调用自己的方法,是一个简单、实用的方法,在遇到某些不好解决的问题时,可以用递归方法来解决,比如:求一段连续自然数之间的和、阶乘等等。下面我简单讲讲递归方法到底是怎么个情况。

      先来一段代码:

public class Demo{
    public static void main(String [] args){
        System.out.println(add(5));
        System.out.println(Jc(5));
    }
    //这是求和
    public static int add(int a){
        if(a==1){
            return 1;
        }else{
            return a+add(a-1);
        }
    }
    //这是阶乘
    public static int Jc(int b){
        if(b==0){
            return 1;
        }else{
            return b*Jc(b-1);
        }
    }
}

   求1——5的和:  

    当传到add方法的实参为5时,第一步进行的判断是不等于1的,进入else,此时return的值为 5+add(5-1),这里便是调用了自己的add方法,此时add中的参数为4;第二步就是进行add(4)的方法,同样,先进行的判断是不等于1的,此时return的值为 4+add(4-1)......当程序运行到add(1)时,进入到第一个判断里面,此时返回的结果为1,因为add(1)是add(2)调用的,所有我们需要将add(1)的值1返回给add(2),那么add(2)的值为a+add(1)=2+1=3,add(2)的值再返回给add(3),以此类推......最终的结果就是1+2+3+4+5=15。

      阶乘同样是如此。

灵魂画手。。。^_^(贱笑了)

    

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值