递归
“一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,
可以将大型复杂的问题转化为一个与原问题相似的小规模的问题求解,
递归只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。”
示例
1.计算 1+2+3+4+ …+100 的结果。
传统方法:
public static void main(String[] args) {
System.out.println(sum(100));
}
public static int sum(int num){
int sum = 0;
while (num>0){
sum +=num;
num--;
}
return sum;
}
结果:
5050
递归:
整个式子可以拆分成是两个数的求和
循环调用求和方法
public static void main(String[] args) {
System.out.println(sum2(100));
}
public static int sum2(int num){
if(num==1){
return num;
}
//返回 (num + 下一个要相加的数调用该方法的结果)
return num + sum2(num-1);
}
结果:
5050