什么是递归
递归就是方法自己调用自己,在编写的时候一定要有一个结束条件,否则将会造成StackOverflowError的错误。
看如下示例,计算1~n的和,按照以前所学习的知识,可能你会这样编写代码
public static void main(String[] args){
int n = 5;
//调用该方法完成1-N的求和
int result = sum(n);
System.out.println(result);
}
//该方法完成1-N的求和.
public static int sum(int n){
int sum = 0;
for(int i=0;i<=n;i++){
sum += i;
}
return sum;
}
如果使用递归的话,可以这样写
public static void main(String[] args){
int n = 5;
//调用该方法完成1-N的求和
int result = sum(n);
System.out.println(result);
}
//该方法完成1-N的求和.
//1+2+3+4+5+...N
public static int sum(int n){
if(n==1){
return 1;
}else{
return n + sum(n-1);
}
}
递归调用图解
![](https://img.haomeiwen.com/i9143032/c14d2fcbb6122faa.png)
练习
使用递归计算n的阶乘
答案
public static void main(String[] args){
long result = multiply(5);
System.out.println(result);
}
public static long multiply(long n){
if(n==1){
return 1;
}else{
return n * multiply(n-1);
}
}
网友评论