1 public class Recursion01{ 2 public static void main(String [] args){ 3 4 Fix can = new Fix(); 5 can.test(5); 6 /* 7 n=2,n=3,n=4,n=5 8 */ 9 10 } 11 } 12 13 14 15 16 class Fix{ 17 public void test (int n ){ 18 if (n>2) { 19 test(n-1); 20 } 21 System.out.println("n="+n); 22 } 23 }
递归重要规则:
1.执行一个方法时,就创建一个新的受保护的独立空间(栈空间)
2.方法的局部变量是独立的,不会相互影响,比如N变量
3.如果方法中使用的是引用类型变量(比如:数组),就会共享该引用类型的数据
4.递归必须向退出递归的条件逼近,否则就是无限递归。
5.当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。
斐波拉契案列:请使用递归的方法求出斐波拉契数1,1,2,3,5,8,13,21...给你一个整数n,求出它的值是多少?
1 public class FeiBo{ 2 public static void main(String [] args){ 3 4 Find can = new Find(); 5 int n =1; 6 int res = can.test(n); 7 if (n!=-1) { 8 System.out.println("当n="+n+"时"+"斐波拉契="+res); 9 } 10 11 } 12 } 13 14 15 16 class Find{ 17 /* 18 案列:请使用递归的方法求出斐波拉契数1,1,2,3,5,8,13,21... 19 给你一个整数n,求出它的值是多少? 20 21 思路分析: 22 当n=1,菲拉=1 23 n =2,菲拉=1 24 n=3,菲拉=2 n=3是前两个数的和:(n-1)+(n-2) 25 n =4, 菲拉= 3 26 27 返回类型Int 28 名字test 29 形参类型:int 30 方法体:if判断 31 */ 32 33 public int test(int n){ 34 if (n>=1) { 35 if (n==1||n==2) { 36 return 1; 37 }else { 38 return test(n-1)+test(n-2); 39 } 40 41 } 42 System.out.println("输入错误,请输入大于1的整数"); 43 return -1; 44 } 45 46 }