递归方法其实就是一个直接或者间接调用自己的方法,是一个简单、实用的方法,在遇到某些不好解决的问题时,可以用递归方法来解决,比如:求一段连续自然数之间的和、阶乘等等。下面我简单讲讲递归方法到底是怎么个情况。
先来一段代码:
public class Demo{
public static void main(String [] args){
System.out.println(add(5));
System.out.println(Jc(5));
}
//这是求和
public static int add(int a){
if(a==1){
return 1;
}else{
return a+add(a-1);
}
}
//这是阶乘
public static int Jc(int b){
if(b==0){
return 1;
}else{
return b*Jc(b-1);
}
}
}
求1——5的和:
当传到add方法的实参为5时,第一步进行的判断是不等于1的,进入else,此时return的值为 5+add(5-1),这里便是调用了自己的add方法,此时add中的参数为4;第二步就是进行add(4)的方法,同样,先进行的判断是不等于1的,此时return的值为 4+add(4-1)......当程序运行到add(1)时,进入到第一个判断里面,此时返回的结果为1,因为add(1)是add(2)调用的,所有我们需要将add(1)的值1返回给add(2),那么add(2)的值为a+add(1)=2+1=3,add(2)的值再返回给add(3),以此类推......最终的结果就是1+2+3+4+5=15。
阶乘同样是如此。
灵魂画手。。。^_^(贱笑了)