java之递归调用

          递归就是自己调用自己,方法与方法之间,类与类之间都可以。所谓递归调用,就是一个方法自己调用自己。在使用递归调用的时候,应该声明一个操作的终结点。不然的话,你的递归程序会因栈空间不足而

    其实很好理解,下面举个例子。

    

public class Test{
	public static void main(String arg[])
	{
		System.out.println(method(5));
	}
	
	//递归函数
	public static int method(int n)
	{
		if(n==1)// 声明的操作的终结点
		{
			return 1;
		}
		else
		{
			return n*method(n-1);
		}
	}
}

    解释:在这个中就使用了自己调用method自己调用自己的方法。在这个方法中,我们先是对它进行传参n,然后用if判断如果n=1结束。否则继续执行递归方法。这个递归直到5次结束。

   内存的执行过程:

   

    描述:method(5)需要method(4)的值,method(4)需要method(3)的值。。。。一直到method(1)有值往回返。

    从这就可以看出:采用递归调用的时候会增加内存负担,因为每调用一次方法都要新开辟一段栈空间,直到该方法调用结束才释放

    但是递归结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,有些算法必须使用递归,用递归来讲比循环要简单明了!

    有优点就有缺点,有的地方说要慎用!不过现阶段主要以学习为主,所以都要尝试,以后再研究它的缺陷。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值