zoukankan      html  css  js  c++  java
  • 递归练习

    求最大公约数

    /**
         * 运用递归,求最大公约数.(假设 m > n)
         *
         * @param m
         * @param n
         * @return
         */
        static int gcd(int m, int n) {
            if (n == 0)
                return m;
            return gcd(n, m % n);
        }
    

    斐波那契数列

    /**
    
         * 
    斐波那契数列
         * 
    O(2^n)
         * @param n
     n为最后一项的索引
         * @return
         */
        static int fib(int n) {
            if (n == 1 || n == 2)
                return 1;
            return fib(n - 1) + fib(n - 2);
        
    

    }

    汉诺塔递归解法

    /**
     * 汉诺塔递归解法
     */
    public class _01_TowerOfHanoi {
        public static void main(String[] args) {
            printHanoiTower(20, "A", "B", "C");
        }
    
        /**
         * 将N个盘子从source移动到target的路径的打印
         *
         * @param N    初始的N个从小到达的盘子,N是最大编号
         * @param from 原始柱子
         * @param to   辅助的柱子
         * @param help 目标柱子
         */
        static void printHanoiTower(int N, String from, String to, String help) {
            if (N == 1) {
                System.out.println("move " + N + " from " + from + " to " + to);
                return;
            }
    
            printHanoiTower(N - 1, from, help, to); // 先把前N-1个盘子挪到辅助空间上去
            System.out.println("move " + N + " from " + from + " to " + to);  // N可以顺利到达target
            printHanoiTower(N - 1, help, to, from); // 让N-1从辅助空间回到源空间上去
    
        }
    }
    

    小白正在上楼梯,楼梯有n阶台阶,小白一次可以上1阶, 2阶或者3阶,实现一个方法,计算小白有多少种走完楼梯的方式。

    
    import java.util.Scanner;
    
    public class Case01_小白上楼梯 {
      public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (true) {
          int n = sc.nextInt();
          int res = f(n);
          System.out.println(res);
        }
      }
    
      private static int f(int n) {
        if (n == 0) return 1;
        if (n == 1) return 1;
        if (n == 2) return 2;
        return f(n - 1) + f(n - 2) + f(n - 3);
      }
    }
    
  • 相关阅读:
    【线段树】懒标记的维护
    【dp】luoguP4796 关于图 想不到是状压dp (┬_┬)
    【数论】莫比乌斯函数+中国剩余定理
    【积累】Burnside引理和Polya定理
    【排序优化】牛客练习赛54D
    ubuntu修改hostname
    apt-get命令详解
    微信历史版本下载
    vim自动补全快捷键
    Servlet实例
  • 原文地址:https://www.cnblogs.com/btlord/p/14406147.html
Copyright © 2011-2022 走看看