递归( recursion)是程序调用自身的过程,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
代码实现如下:
public class RecursionDemo { //递归
public static int getsum(int a){
if (a==1)
return 1;
return a+getsum(a-1);
}
public static void main(String[] args) {
int a=getsum(5);
System.out.println("a="+a);
}
}
运行结果为:
a=15
以上就是递归的一种简单实现
在这个程序中就是求从1加到某个数的和,当这个数为5时,return 5+(5-1),这样就可以理解为return 5+(return 4+(4-1)),直到(a-1)为1时返回1,
那么结果就是return 5+4+3+2+1.
递归需要注意两点:
1.要限定条件。因为不管调用自身多少次最终程序要能结束。
2.要注意递归的次数。如果次数太多的话会内存溢出。
比如:如果int a=getsum(5);中将5换为5000就会出现
Exception in thread "main" java.lang.StackOverflowError
因此可见递归并不适用于大型的计算。