递归调用

递归调用

什么是递归?

递归函数就是在一个方法内直接或者间接调用函数本身的函数
例如:计算1-100的和; 不使用递归可以这样写:

public static void  main(String args[]){
	int n=100;
	int output = sum(n);
	System.out.println(output);
}
public static int sum(int n){
	int temp=0;
	for(int i=n;i>0;i--){
		temp+=i;
	}
	return temp;
}/* Output:
5050
*/

而在使用递归函数的情况下可以这样写:


```java
public static void main(String args[]){
	int n=100;
	int output = sum(n);
	System.out.println(output);
}
public static int sum(int n){
	if(n==1)
		return 1;
	return n=n+sum(n-1);
}

需要注意的是,如果不给递归添加一个终止条件的话,程序将会一直运行下去直到发生栈溢出错误。

Exception in thread “main” java.lang.StackOverflowError

如果没有终止条件:

if(n==1)
	return 1

的话将会发生上述错误。

递归的过程图:


同理如果使用非递归方法计算5的阶乘:

public static void main(String args[]){
	int n=5;
	int output = methon(n);
	System.out.println(output);
	}
public static int methon(int n){
	int temp =1;
	for(int i=n;i>0;i--)
		temp =temp*i;
	return 
}/*	Output:
	120
*/

如果使用递归调用只需要将求和的递归函数的“+”号变成" * "号即可

public static void main(String args[]){
	int n=5;
	int output = sum(n);
	System.out.println(output);
}
public static int sum(int n){
	if(n==1)
		return 1;
	return n=n*sum(n-1);
}/* Output:
	120
*/
return 语句的执行结果如下:
return  n=5*sum(5-1);
return  n=5*4*(4-1);
return  n=5*4*3*sum(3-1);
return  n=5*4*3*2*sum(2-1);
//当n=1时,执行if(n==1)条件语句,返回值为1,此时递归结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值