递归
public class Recursion01 { public static void main(String[] args) { T t1=new T(); t1.test(10); } } class T{ public void test(int n){ if(n>2){ test(n-1); } System.out.println("n=" + n); } } //输出n=2 n=3 n=4
//阶乘 public class Recursion02 { public static void main(String[] args) { p p1=new p(); int result=p1.factorial(5); System.out.println(result); } } class p{ public int factorial(int n){ if(n==1){ return 1; }else{ return factorial(n-1)*n; } } }输出120
-
执行一个方法时,创建一个新的受保护的独立空间
-
方法局部变量是独立的,不会相互影响,比如n变量
-
如果方法中使用的是引用类型变量(比如数组或对象),就会共享引用类型的数据
-
方法执行完毕,或则遇到rerurn,就会返回,遵守谁调用就键结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕
递归练习
桃子问题:10天有一个,前一天吃一半,再多吃一个,以此类推
public class RecursionTest02 { public static void main(String[] args) { Y day =new Y(); int result=day.peach(1); System.out.println(result); } } class Y { public int peach(int day){ if(day==10){ return 1; }else if(day>=1&&day<=9){ return (peach(day+1))*2; }else{ System.out.println("输入有误"); return -1; } }
2021.9.18