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);
            }
        }
    
    }
    终身学习者
  • 相关阅读:
    [CSS揭秘]扩大可点击区域
    [CSS揭秘]鼠标光标
    [JavaScript语法学习]全面介绍对象
    [JavaScript语法学习]全面介绍函数
    [JavaScript语法学习]全面介绍Array
    [Linux养成计划]Linux简介
    [Redis]Redis安装和使用
    [Python笔记]Python学习笔记三
    Linux_基础_文件权限
    Git_Eclipse:[8]Git分支操作
  • 原文地址:https://www.cnblogs.com/zuixinxian/p/9806502.html
Copyright © 2011-2022 走看看