A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

cj-developer

初级黑马

  • 黑马币:26

  • 帖子:8

  • 精华:0

© cj-developer 初级黑马   /  2020-2-26 08:53  /  1318 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


不死神兔案例!


public class TheUndeadRabbit {

        public static void main(String[] args) {
               
                int rabnum = getRabbitNum(20);
                System.out.println("问第二十个月的兔子数为多少?\n" + rabnum);
               
                System.out.println("程序结束!");
                System.out.println("---------------------------------------------------");
               
                /*
                        需求:
                                有一对兔子,从出生后第3个月起每个月都生一对兔子
                                小兔子长到第三个月后每个月又生一对兔子
                                假如兔子都不死,问第二十个月的兔子数为多少?
                               
                        思路:第三个月的兔子的总量 = 第二个月的兔子总量 + 第一个月的兔子总量
                        结论:每月的兔子总数为前两个月的兔子数之和
                       
                        方法
                                方法一:使用递归思想求解,采用数组的方式实现
                                方法二:采用变量赋值相互传递的方式实现
                                方式三:使用递归思想求解,构建方法,方法中调用方法形成循环,if作为循环终止条件
                 */
               
                //方法一
                //定义和初始化兔子数组rab用于存储兔子对数
                int[] rab = new int[20];
                rab[0] = 1;
                rab[1] = 1;
               
                //采用for结构循环计算下个月的兔子总量,直到数组长度减一为止
                for(int i = 1;i < rab.length - 1;i++) {
                       
                        //下个月的兔子总量 = 本月的兔子总量 + 上个月的兔子总量
                        rab[i+1] = rab + rab[i-1];
                }
               
                //输出第二十个的月兔子总量
                System.out.println("问第二十个月的兔子数为多少?\n" + rab[19]);
               
                System.out.println("程序结束!");
                System.out.println("---------------------------------------------------");
               
               
                //方法二
                //定义兔子总数计数变量count,第一个月兔子总数变量num,第二个月兔子的总数变量num1
                int count = 0,num = 1 ,num1 = 1;
               
                //采用for结构循环计算每月兔子的总数,每月的兔子总数为前两个月的兔子数之和
                for(int i = 3;i <= 20;i++) {
                       
                        //下个月的兔子总量 = 本月的兔子总量 + 上个月的兔子总量
                        //第三个月的兔子的总量 = 第二个月的兔子总量 + 第一个月的兔子总量
                        //每月的兔子总数为前两个月的兔子数之和
                        count = num1 +num;
                        num = num1;
                        num1 = count;       
                }
               
                //输出第二十个的月兔子总量
                System.out.println("问第二十个月的兔子数为多少?\n" + count);
               
                System.out.println("程序结束!");
                System.out.println("---------------------------------------------------");

        }
       
        //方法三
        //构建getRabbitNum方法,month作方法的形参,表示需要传入的月份
        public static int getRabbitNum(int month) {
               
                //if和else中return返回调用方法getRabbitNum得到的值构成循环
                //month等于1或者2时返回值1,且停止循环
                if(month == 1 || month == 2) {
                        return 1;
                } else {
                        return(getRabbitNum(month-1) + getRabbitNum(month -2));
                }
        }       




}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马