zoukankan      html  css  js  c++  java
  • 【递归:用代码实现求5的阶乘:不死神兔】

    package com.bornsoft.test.capitalpool.tyc;
    
    /**
     * @author shusheng
     * @description
     * @Email shusheng@yiji.com
     * @date 2018/10/16 8:52
     */
    public class DiGuiDemo1 {
    
        public static void main(String[] args) {
            System.out.println(jieCheng(3));
            System.out.println(buSiShenTu(20));
        }
    
        /**
         * 需求:请用代码实现求5的阶乘。
         * 下面的知识要知道:
         * 5! = 1*2*3*4*5
         * 5! = 5*4!
         */
        public static int jieCheng(int n) {
            if (n == 1) {
                return 1;
            } else {
                return n * jieCheng(n - 1);
            }
        }
    
        /**
            有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
            假如兔子都不死,问第二十个月的兔子对数为多少?
            *分析:我们要想办法找规律
            *兔子对数
            * 第一个月:    1
            * 第二个月:    1
            * 第三个月:    2
            * 第四个月:    3
            * 第五个月:    5
            * 第六个月:
            * ...    8
            *由此可见兔子对象的数据是:
            *    1,1,2,3,5,8...
            *规则:
            *A:从第三项开始,每一项是前两项之和
            *B:而且说明前两项是已知的
            *
            *如何实现这个程序呢?
            *假如相邻的两个月的兔子对数是a,b
            *第一个相邻的数据:a=1,b=1
            *第二个相邻的数据:a=1,b=2
            *第三个相邻的数据:a=2,b=3
            *第四个相邻的数据:a=3,b=5
            *看到了:下一次的a是以前的b,下一次是以前的a+b
        */
        public static int buSiShenTu(int n) {
            if (n == 1 || n == 2) {
                return 1;
            } else {
                return buSiShenTu(n - 1) + buSiShenTu(n - 2);
            }
        }
    
    }
    终身学习者
  • 相关阅读:
    每日日报2020.12.1
    每日日报2020.11.30
    981. Time Based Key-Value Store
    1146. Snapshot Array
    565. Array Nesting
    79. Word Search
    43. Multiply Strings
    Largest value of the expression
    1014. Best Sightseeing Pair
    562. Longest Line of Consecutive One in Matrix
  • 原文地址:https://www.cnblogs.com/zuixinxian/p/9806502.html
Copyright © 2011-2022 走看看