第七节(简单算法)
/* 关于方法的递归调用 方法调用其实是 “压栈” 方法结束其就是 “弹栈” 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(){ } }