700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)

Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)

时间:2020-05-17 15:16:14

相关推荐

Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)

1.这个问题是如下的:

有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的对数?

分析:我们找规律

兔子对数

第1个月: 1

第2个月: 1

第3个月: 2

第4个月: 3

第5个月: 5

第6个月: 8

……

由此可见兔子的对象数据是:

1,1,2,3,5,8,……

•n=1或者n=2,result=1;

• n>=3,result=fun(n-1)+fun(n-2);

2. 代码实现:

1 package com.himi.diguidemo; 2 3 4 /** 5 * 6 *有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的 对数? 7 *分析:我们找规律 8 * 兔子对数 9 *第1个月: 110 *第2个月: 111 *第3个月: 212 *第4个月: 313 *第5个月: 514 *第6个月: 815 *……16 *由此可见兔子的对象数据是:17 * 1,1,2,3,5,8,……18 * 19 * 如何实现这个程序呢?20 * A:数组实现21 * B:变量的变化实现22 * 假如相邻的两个月的兔子对数为a,b23 * 第1个月: a=1,b=124 * 第2个月: a=1,b=225 * 第3个月: a=2,b=326 * 第4个月: a=3,b=527 * 看到了:下一次的a是以前的b,下一次的b是以前的a+b28 * 29 *C:递归实现30 */31 public class DiGuiDemo2 {32 33public static void main(String[] args) {34 //数组实现35 int[] arr = new int[20];36 arr[0] = 1;37 arr[1] = 1;38 for(int i =2; i<=arr.length-1; i++) {39 arr[i] = arr[i-1]+arr[i-2];40 }41 System.out.println("数组实现---第20月兔子的对数:"+arr[19]);42 43 System.out.println("=============================");44 //变量的变化实现45 int a=1; 46 int b=1;47 for(int i=0; i<18; i++){48 int temp =a;//保存a的初试值49 a = b; //这里的a发生了变化,而下面需要使用到a的初始值,所以上面定义了int temp = a;50 b = temp+b;51 }52 System.out.println("变量的变化实现---第20月兔子的对数:"+b);53 54 System.out.println("=============================");55 56 //递归实现57 System.out.println("递归实现---第20月兔子的对数:"+func(20));58 59}6061public static int func(int n) {62 if(n==1 || n==2) {63 return 1;64 } 6566 return func(n-1)+func(n-2);67}68 69 }

运行结果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。