zoukankan      html  css  js  c++  java
  • 递归方法(recursion)

    • 递归:指在当前方法内调用自己的这种现象。

    • 递归的分类:

      • 递归分为两种,直接递归和间接递归。

      • 直接递归称为方法自身调用自己。

      • 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。

    • 注意事项

      • 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。

      • 在递归中

        #### 语法案例演示一:计算1-100之间所有自然数的和
        
        ```java
        public class RecursionMethod1{
            public static void main(String[] args) {
                Count c = new Count();
                
                int sum = c.sum(100);
                System.out.println("1-100的和:" + sum);
            }
        }
        class Count{
            public int sum(int n){
                if(n == 1){
                    return 1;
                }else{
                    return n + sum(n-1);
                }
            }
        }
        ```
        求n!
        public class RecursionMethod2{
            public static void main(String[] args) {
                Count c = new Count();
                
                int jieCheng = c.jieCheng(10);
                System.out.println("10的阶乘是:" + jieCheng);
            }
        }
        class Count{
            public int jieCheng(int n){
                if(n <= 1){
                    return 1;
                }else{
                    return n * jieCheng(n-1);
                }
            }
        }
        #### 计算斐波那契数列(Fibonacci)的第n个值
        
        规律:一个数等于前两个数之和,
        
        ​    f(0) =1,
        
        ​    f(1) = 1,
        
        ​    f(2) = f(0) + f(1) =2,
        
        ​    f(3) = f(1) + f(2) = 3, 
        
        ​    f(4) = f(2) + f(3) = 5
        
        ​    ...
        
        ​    f(n) = f(n-2) + f(n-1);
        
        
        public class RecursionMethod3{
            public static void main(String[] args) {
                Count c = new Count();
                
                System.out.println("f(10):" + c.f(10));
                System.out.println("f方法被调用的总次数:" + c.total);
            }
        }
        class Count{
            int total = 0;
            public int f(int n){
                total++;
                if(n <= 1){
                    return 1;
                }else{
                    return f(n-2) + f(n-1);
                }
            }
        }

         

  • 相关阅读:
    1434. Buses in Vasyuki 夜
    SAP
    目标
    组合数
    KM算法模板
    网络流
    CodeForces 43E
    B. Unsorting Array codeforces 127
    Colorful Rainbows 127
    C. Anagram codeforces
  • 原文地址:https://www.cnblogs.com/panyizuoshan/p/11398352.html
Copyright © 2011-2022 走看看