方法递归调用基本使用
-
基本介绍
-
递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂问题,同时可以让代码变得简洁
-
-
递归能解决什么问题
-
递归举例: recursion
-
打印问题
package chapter7; public class Recursion01 { public static void main(String[] args) { T t1 = new T(); t1.test(4); } } class T{ public void test(int n){ if (n > 2){ test(n - 1); //到这发生了递归 } System.out.println("n=" + n); } }
-
把上面的class T加个 else
class T{ public void test(int n){ if (n > 2){ test(n - 1); }else{ System.out.println("n=" + n); } }
-
当n=3时,下面的栈进入到 if 后才会开个栈,就不会进入到 else 里了,所以 3,4就不会被输出了
-
-
-
阶乘问题 factorial
public class R1 { public static void main(String[] args) { T t1 = new T(); int res = t1.factorial(5); System.out.println("5的阶乘 res" + res); } } class T{ public int factorial(int n){ if (n == 1){ return 1; }else{ return factorial(n - 1) * n; } } }
-
谁调用就返回给哪个,最后
return 1
返回给factorial(1)
,factorial(1)x2=2
返回给factorial(2)
,一层一层返回调用
-
-
递归重要规则
-
执行一个方法时,就创建一个新的受保护的独立空间(栈空间)
-
方法的局部变量是独立的,不会互相影响, 比如n变量
-
如果方法中使用的是引用类型变量(比如数组, 对象), 就会共享该引用类型的数据
-
递归必须向退出递归的条件逼近,否则就是无限递归
-
当一个方法执行完毕, 或者遇到return 就会返回,遵守谁调用,就将结果返回给谁, 同时当方法执行完毕或者返回时, 该方法也就执行完毕
-