面试题 求助 高手请进!!!
有一种小虫,每隔两秒钟分裂一次。分裂后的两只新的小虫经过两秒钟后又会分裂。如果最
初某瓶中只有一只小虫,那么两秒后变两只,再过两秒后就变四只……两分钟后,正好满满
一瓶小虫。现在这个瓶内最初放入两只这样的小虫。
问:经过多少时间后,正巧也是满满的一瓶?
那位高手帮忙给个解题思路和Java解题算法代码。------解决方案--------------------2分钟 120秒
现在最初2只,也就是放入1只 2秒中之后的情况。也就是120 - 2,118秒
。
------解决方案--------------------虫子的数目是1-2-4-8-16-...这样变化的,第一次是从0秒开始计时,第二次相当于从第2秒开始计时,时间应该是118,这是我的想法,仅作参考
------解决方案--------------------
------解决方案--------------------楼上正解,这不就是个脑经急转弯啊?
------解决方案--------------------
------解决方案--------------------一只变成两只的时候话了两秒钟,那么从两只开始的时候就减去开始的两秒不就好了啊!正解就是118秒!
------解决方案--------------------public static void main(String args[]) {
get(2,0);
}
public static void get(int starNum,int second){
if(second<120){
if(second%2==0){
starNum += starNum*2;
second += 2;
System.out.println("第"+second+"秒,有"+starNum+"条虫子!");
get(starNum,second);
}
}
}
------解决方案--------------------
------解决方案--------------------用BigDecimal呗。
------解决方案--------------------楼上正解!
------解决方案--------------------学习了 楼主正解
------解决方案--------------------有意思,逆向思维
------解决方案--------------------[Quote=引用:]
引用:
2分钟 120秒
现在最初2只,也就是放入1只 2秒中之后的情况。也就是120 - 2,118秒
。
误解,这个起码没考虑起初那1只虫子,以及它繁衍的虫子,所占的空间
[/Quote]
这题是说1个分裂为2个,不是说1个生下了2个,所以一秒后总数是2个而不是3个.
------解决方案--------------------118秒
------解决方案--------------------现在最初2只,也就是放入1只 2秒中之后的情况。也就是120 - 2,118秒
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------其实这个问题非常的简单,我面试的时候也被问到了,一只虫子两分钟能分裂满,120秒结束,我们不必算 两个虫子一直分裂下去,只需要从两只虫子分裂算起,所以 答案就是减少了第一次的分裂时间,所以是118秒,
------解决方案--------------------