黑马程序员技术交流社区
标题: 不死神兔的问题,问问用java程序大神们怎么做 [打印本页]
作者: 煤男纸 时间: 2016-10-12 22:41
标题: 不死神兔的问题,问问用java程序大神们怎么做
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
作者: Daveweil 时间: 2016-10-13 08:19
找规律,前两个月的和,是第三个月的值
作者: 煤男纸 时间: 2016-10-13 12:23
Daveweil 发表于 2016-10-13 08:19
找规律,前两个月的和,是第三个月的值
不知道咋编程
作者: Daveweil 时间: 2016-10-13 22:45
煤男纸 发表于 2016-10-13 12:23
不知道咋编程
一种是数组的做法,一种是递归,反正都一样,你定义数组的长度为你要的长度,然后数组的0.1位置存1,第三个位置存arr【3】=arr【3-1】+arr【3-2】
作者: star皆空 时间: 2016-10-14 12:34
好高大上的样子
作者: wgc 时间: 2016-10-16 23:57
好厉害的样子 大神们赶紧来
作者: 琼华掌教 时间: 2016-10-16 23:58
老司机热衷分析,很棒
作者: jinjinjin 时间: 2016-10-17 00:38
本帖最后由 jinjinjin 于 2016-10-17 00:40 编辑
public class Test {
public static void main(String[] args) {
// fun(3)是第五个月的,以后依次类推 fun(4) 第六个月.......
System.out.println(fun(2));
}
public static int fun(int i){
if(i==1){
return 1;
}else{
return i+fun(i)*(1/3);
}
}
}
可以看看,看这样写对不对
作者: yyl010 时间: 2016-10-17 08:56
这是一个递归问题,主要在于分析
作者: zhuangshuang123 时间: 2016-10-17 09:27
用递归做简单
作者: yyl010 时间: 2016-10-17 09:37
//建一个数组存储每个月兔子数
int[] arr = new int [12];
arr[0]=1; //第一个月兔子数
arr[1]=1; //第二个月兔子数
for (int i = 2; i < arr.length; i++) {
arr[i]=arr[i-1]+arr[i-2]; //前两个月兔子数之和是后一个月的兔子数
}
System.out.println(arr[arr.length-1]);
}
作者: Checkming 时间: 2016-10-27 22:48
不死神兔(阶乘)
作者: Checkming 时间: 2016-10-27 23:11
不死神兔其实就是递归
如: 8=8!
8=8*7*6*5*4*3*2*1
= 8*7!
..........
代码如下:
public class Text1 {
public static void main(String [] args) {
// 1 1 2 3 5 8 13 21
int num = getNum(5); //5的阶乘
System.out.println(num);
}
public static int getNum(int num) {
if(num == 1 || num == 2) {
return 1;
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |