如何理解递归

递归是什么?
  • 递归就是A方法调用A方法,自己调用自己;

    递归结构包括两个部分:
  • 递归头:什么时候不调用自身的方法。如果没有头,将陷入死循环;
  • 递归体:什么时候需要调用自身的方法;
递归有什么作用?

通常可以把一个大型复杂的问题层转化为一个与原问题相似的比较小的问题来解决可以大大减低程序的代码量;

递归怎么使用?
  • 直接调用自己
  • 例:
    public class Demo05 {
        public static void main(String[] args) {
            Demo05 test = new Demo05();//test代表Demo05这个类
            test.test();//自己调用自己
        }
        //写一个自己的方法test
        public void test(){
            test();
        }
    }

    会直接报错,栈溢出;因为没有头所以直接陷入死循环;

例:举例一个5!的阶乘。

public class Demo6 {

    public static void main(String[] args) {
        System.out.println(f(5));
    }
    //1、先自己写个方法
    //1! 1 的阶乘就是他本身这个数字
    //2! 2*1
    //阶乘  5! 5*4*3*2*1
    public static int f(int n){
        if (n==1){//如果是他本身就时间return 1;
            return 1;
        }else{
            return n*f(n-1);//只要不等于1就继续减1;
        }
    }
}

原理图:

1、它会不断的调用自身;比如说5!的阶乘 5*5-1、(变成4) 4*4-1、(变成3)3*3-1、(变成2)2*2-1、(变成1)1   ;

2、变成1之后又继续乘;1*1还是1、1*2(变成2)、2*3(变成6)、4*6(变成24)、5*24(变成120 ) ;

后言~

基数比较大不建议用递归 ~

个人笔记,如有错误还请指正。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值