什么是递归?
递归就是程序不断的调用自身。
递归分为直接递归和间接递归:
•直接递归:函数在执行过程中调用本身。
•间接递归:函数在执行过程中调用其它函数再经过这些函数调用本身。
递归四大要素:
1.递归要有出口,也就是终止点,否则会一直循环,知道资源耗尽
2.问题不断缩小
3.问题通过再次递归可得到解决
4.子问题的组的解应该问题的最终解
例子:
将一个8两重的苹果分成若干重量相等的份。
1.首先将苹果对半切开,分成两份。
2.再次将两份对半分成重量的相等份。
3.不断重复2步骤
4.直到每一小份都是1两为止。
1、最终重量是每一份等于1两
2、每次切的都比上一次的小
3、当每份重量都是1两时,问题得到解决,每个子问题都可通过递归调用解决
4、每份重量都是1两时为最终结果。
public static int count =1;
public static void main(String[] args) {
// TODO Auto-generated method stub
sliceApple(8,1);
}
public static void sliceApple(int weight,int times){
if(weight <=1){
return;
}
else{
int getWeight = weight/2;
count =count*2;
System.out.println("第"+times+"次等分重量为:"+getWeight+"两 ,分成了"+count+"个苹果");
times += 1;
sliceApple(getWeight,times);
}
}
结果:
第1次等分重量为:4两 ,分成了2个苹果
第2次等分重量为:2两 ,分成了4个苹果
第3次等分重量为:1两 ,分成了8个苹果