/*
关于方法的递归调用
方法调用其实是 “压栈”
方法结束其就是 “弹栈”
1. 方法的递归调用就是方法自身调用自身
2. 以下程序因为递归没有结束条件,所以一直在压栈,没有弹栈,导致 栈内存溢出报错 !
所以 递归必须要有结束条件;
*/
public class RecursionTest01{
// 入口
public static void main(String[] args){
arry();
}
public static void arry(){
arry();
}
}
/*
计算 1-N的求和
不使用 递归 怎么做?
*/
public class RecursionTest02{
public static void main(String[] args){
int value = sum1(6);
System.out.println("value = " + value);
}
// 该方法 需要完成1-N的求和
public static int sum1(int n){
int sum = 0;
for(int i = 0; i <= n; i++){
//sum = sum + i;
sum += i;
}
return sum;
}
}
/*
计算 1-N的求和
使用 递归 怎么做?
*/
public class RecursionTest03{
public static void main(String[] args){
int n = 6;
// 调用该方法
int value = sum1(n);
System.out.println("value = " + value);
}
// 该方法 需要完成1-N的求和
// 1+2+3+4+5+6+ ..... +N
public static int sum1(int n){
System.out.println("我们在外边试试 ------------------------");
if(n == 1){
System.out.println("ming到底帅不帅 ! 我是NO1");
return 1;
} else {
System.out.println("ming到底帅不帅 !");
return n + sum1(n-1);
}
/*
当 n = 6; n+(n-1) 6+5;
*/
}
}
/*
使用图形,画出一个程序的执行流程
后进先出
方法的执行原理:
方法在调用的时候,才会给该方法在内存中分配空间
如果这个方法只是定义没有调用,则不会在内存中分配空间
方法在调用的时候在 “栈” 中分配空间,(JVM内存中有一块内存是 栈内存)
方法调用其实是 “压栈”
方法结束其就是 “弹栈”
只有方法结束才能弹栈
*/
public class MethodTest08{
// 入口
public static void main(String[] args){
int i = 100;
m1(i);
}
public static void m1(int i){
m2(i);
}
public static void m2(int i){
m3(i);
}
public static void m3(int i){
System.out.println("m3的方法中的i = " + i);
}
public static void m4(){
}
}