递归执行机制

 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 }

 

上一篇:【考试总结】2022-2-21


下一篇:Ubuntu20,21登录界面卡死【thinkpad S5】