递归:只的是方法调用方法本身的一种现象
Math类:max() 方法 Math.max(10,Math.max(15,20)); 这种并不属于方法递归,而是方法嵌套
举例
方法递归:
public void show(int n){
if(n<0){
System.exit(0) ;//jvm退出了
}
System.out.println(n) ;
show(n--) ;
}
方法递归的三个必要条件:
1)方法递归必须有出条件
2)必须满足一些规律
3)一定要写方法
注意:构造方法不存在方法递归的
举例
从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
Math类:max() 方法 Math.max(10,Math.max(15,20)); 这种并不属于方法递归,而是方法嵌套
举例
方法递归:
public void show(int n){
if(n<0){
System.exit(0) ;//jvm退出了
}
System.out.println(n) ;
show(n--) ;
}
方法递归的三个必要条件:
1)方法递归必须有出条件
2)必须满足一些规律
3)一定要写方法
注意:构造方法不存在方法递归的
举例
从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
条件结束:山塌了,或者和尚挂了
需求:求5的阶乘
5! = 5 * 4 * 3 * 2 *1
5! = 5 * 4!
方式:
1.普通for循环
2.用递归的方式去写
1)方法递归必须有出条件
2)必须满足一些规律
3)一定要写方法
public class DiGuiDemo2 {
public static void main(String[] args) {
//求5的阶乘
//定义结果变量
int jc = 1 ;
for(int x =2 ;x <=5 ; x ++) {
jc*=x ;
}
System.out.println("5的阶乘是:"+jc);
System.out.println("-------------------------");
System.out.println("5的阶乘是:"+jieCheng(5));
}
/**
* 1)先出口,再找规律
* 出口条件是什么
* if(n==1){
* return 1 ;
* }else{
* return n*jieCheng(n-1) ;
* }
*/
private static int jieCheng(int n) {
if(n==1) {
return 1 ;
}else {
return n*jieCheng(n-1) ;
}
}
}
未完待续...