黑马程序员技术交流社区
标题: java算法,问问自己能不能独自做出来,明天下午公布答案! [打印本页]
作者: 黄宝宝 时间: 2014-7-31 23:55
标题: java算法,问问自己能不能独自做出来,明天下午公布答案!
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
作者: masai158 时间: 2014-7-31 23:59
这是一道递归题。好了。睡觉了。明天等你公布答案了
作者: 科篮 时间: 2014-8-1 00:00
递归,斐波拉侧数列
作者: 韩天雷 时间: 2014-8-1 00:34
- public class Rabbit {
- public static void main(String[] args) {
- long f1, f2;
- int i;
- f1 = f2 = 1;
- for (i = 1; i <= 20; i++) {
- System.out.println(f1 + "\r\n" + f2);
- f1 = f1 + f2; // 前两个月加起来赋值给第三个月
- f2 = f1 + f2; // 前两个月加起来赋值给第三个月
- }
- }
- }
复制代码
作者: chulangren2 时间: 2014-8-1 00:40
递归算法。
作者: M单色调 时间: 2014-8-1 00:51
这个是斐波那切数列!这是基础测试吧?
作者: 黄宝宝 时间: 2014-8-1 01:13
:D,好吧,看来不用我公布答案了!觉得简单的做做那位点评兄弟加的料啊!必须用递归,且在运行程序后1秒之内算出第50个月的兔子数
我想了一下,不会做!我太菜了!求解答!
作者: 黄宝宝 时间: 2014-8-1 01:14
不知道啊,书上看的题目!
作者: 戒风 时间: 2014-8-1 07:21
我用c做过,递归……
作者: 黎志勇 时间: 2014-8-1 08:18
本帖最后由 黎志勇 于 2014-8-1 08:53 编辑
这算不算做出来了?
- package test;
- public class Test19 {
- public static void main(String[] args) {
-
- for (int i = 0; i <= 50; i++) {
- try {
- test(i);
- } catch (Exception e) {
- continue;
- }
- }
-
- }
-
- public static void test(int num) {
- long start = System.currentTimeMillis();
- long count = rabbitMethod(num);
- long end = System.currentTimeMillis();
- System.out.println("第"+num+"个月会有"+count+"对兔子,计算耗时"+(end-start)+"毫秒");
- }
-
- public static long rabbitMethod(int num){
- if(num<1) {
- throw new RuntimeException("操作错误,错误操作数:"+num);
- }
- if (num<3) {
- return 1;
- } else {
- long f1 = 1, f2 = 1;
- return getCount(2,num,f1,f2);
- }
-
- }
- private static long getCount(int now, int num, long f1, long f2) {
- if(now == num) {
- return f2;
- }
- return getCount(now+1, num, f2, f1+f2);
- }
- }
复制代码 那递归实际上就是个while循环,可以合并成这样
- public static long rabbitMethod(int num){
- if(num<1) {
- throw new RuntimeException("操作错误,错误操作数:"+num);
- }
- if (num<3) {
- return 1;
- } else {
- long f1 = 1, f2 = 1;
- long temp = 0;
- int now = 2;
- while (now<num) {
- temp = f1 + f2;
- f1 = f2;
- f2 = temp;
- now++;
- }
- return f2;
- }
-
- }
复制代码
作者: 王飞163 时间: 2014-8-1 08:30
高手自在民间啊!
作者: 赵顺超 时间: 2014-8-1 08:32
黄宝宝 发表于 2014-8-1 01:13
,好吧,看来不用我公布答案了!觉得简单的做做那位点评兄弟加的料啊!必须用递归,且在运行程序后1秒之 ...
不用递归也能做
作者: M单色调 时间: 2014-8-1 08:37
我的基础测试就有这道提。。
作者: 周峰峰 时间: 2014-8-1 08:49
等着公布答案
作者: 孤守星空 时间: 2014-8-1 09:09
怎么觉得我好像见过
作者: 禅伤 时间: 2014-8-1 09:18
就是斐波那契数列,我基础测试做过
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |