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);
      }
    }
    
  • 相关阅读:
    怎样运用Oracle的BFILE
    第一个博客
    返回引用的函数
    c++之SQLite的增删改查
    sqlite命令行程序说明
    CreateProcess函数详解
    注册窗口类
    radio button的用法
    跨线程使用CSocket
    关于socket的connect超时的问题
  • 原文地址:https://www.cnblogs.com/btlord/p/14406147.html
Copyright © 2011-2022 走看看