Java递归

Java递归

  • 递归的定义:从字面的意思来理解,递归就是不断的重复的调用自己;
  • 递归的特点:因为是重复调用自己了,所以看起来像一个循环,所以为了避免内存溢出系统崩溃,我们需要在方法里加一个返回值判断,用于递归循环的跳出;
  • 递归的缺陷:递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢的多,所以在使用递归时要慎重。任何能用递归解决的问题也能使用迭代解决,不强调效率问题时,可以采用递归;在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。
  • 实例:求和1到100
public class Test {
        public static void main(String[] args) {
            System.out.println(sum(1));
        }
        //调用求和方法
        public static int sum(int n){
            //跳出递归判断
            if(n == 100){ 
                  return 100; 
            }
            return n + sum(n+1);
        }
}

首先第一次调用sum,方法里的参数值为1,然后进入到if中,由于值不是100,所以不会执行return 100;程序会继续向下进行;
运行到return n参数值 1 已经保存在n里,代码运行到sum(n+1),又创建一个sun方法,此时n值自增+1为2,并保存到第二个sum方法的n里,那么继续运行,接下来就是第二个sum方法里创建第三个sum方法,第三个sum方法里 创建第四个sum方法…创建后自增的值都会保存到当前sum方法的int n中,最终运行到100次后,if会将100的值返回,方法就不会继续执行到return n+sum(n+1),所以就不会在创建新的sum方法了,递归也就跳出了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值