阿里Java学习路线:阶段 1:Java语言基础-Java编程入门:第8章:方法的定义及使用:课时31:方法递归调用

方法的递归调用指的是一个方法自己调用自己的情况,利用递归调用可以解决一些重复且麻烦的问题。在进行方法递归调用的时候一般需要考虑如下几点问题:
一定要设置方法递归调用的结束条件;
每一次调用的过程之中一定要修改传递的参数条件。
范例:实现一个1~100的累加

public class JavaDemo {
	public static void main(String args[]) {
		int sum = 0 ;
		int x = 1 ;
		while (x <= 100) {	// 循环的结束条件
			sum += x ;
			x ++ ;		// 修改每一次循环的变量
		}
		System.out.println(sum) ;
	}
} 

public class JavaDemo {
	public static void main(String args[]) {
		System.out.println(sum(100)) ;
	}
	public static int sum(int num) {	// 执行累加
		if (num == 1) {	// 不累加了
			return 1 ;
		}
		return num + sum(num - 1) ;	// 递归调用
	}
} 

下面对此代码进行一些简单的分析处理:
[第1次执行sum()、主方法执行] return 100 + sum(99);
[第2次执行sum()、sum()递归调用] return 99 + sum(98);
… … … …
[第99次执行sum()、sum()递归调用] return 2 + sum(1);
[第100次执行sum()、sum()递归调用] return 1;
整体形式:return 100+99+98+… …+2+1;递归操作虽然可以简化我们的调用,但是在实际的开发之中,你们所编写的代码可能会很少出现有递归情况。大部分情况下考虑的都只是一些简单的处理逻辑。递归少去使用还有另外一个原因:如果处理不当则会造成内存溢出。

范例:计算“1!+2!+3!+4!+5!+… …+90!”
在进行阶乘计算的时候必须要考虑选择的数据类型,肯定不能够使用int或long,只能使用double。

public class JavaDemo {
	public static void main(String args[]) {
		System.out.println(sum(90)) ;
	}
	public static double sum(int num) {
		if (num == 1) {
			return 1 ;
		}
		return fan(num) + sum(num - 1) ;
	}
	public static double fan(int num) {	// 执行累加
		if (num == 1) {	// 不累加了
			return 1 ;
		}
		return num * fan(num - 1) ;	// 递归调用
	}
} 

实际上有一部分的递归都是可以通过循环来完成,但是如果使用递归要比使用循环结构看起来更加清晰一些。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值