古典问题 有一对兔子对数 问题??

当前位置:
第56集 对数歌
Copyright (C) k休闲游戏世界版权所有 All Rights Reserved. 京icp证080634号
免责声明:作品版权归作者所有,如果无意之中侵犯了您的版权,请来信告知,本站将在3个工作日内删除
如果有意见和建议,请E-mail至当前位置:
>>>意大利数学家斐波拉契,在1202年出版的一书里提出了这样的一个问..
意大利数学家斐波拉契,在1202年出版的一书里提出了这样的一个问题:一对兔子饲养到第二个月进入成年,第三个月生一对小兔,以后每个月生一对小兔,所生小兔能全部存活并且也是第二个月成年,第三个月生一对小兔,以后每月生一对小兔.问这样下去到年底应有多少对兔子?试画出解决此问题的程序框图,并编写相应的程序。
题型:解答题难度:中档来源:同步题
解:根据题意可知,第一个月有1对小兔,第二个月有1对成年兔子,第三个月有两对兔子,从第三个月开始,每个月的兔子对数是前面两个月兔子对数的和,设第N个月有F对兔子,第N-1个月有S 对兔子,第N-2个月有Q对兔子,则有F=S+Q,流程图(如图)和程序:&
马上分享给同学
据魔方格专家权威分析,试题“意大利数学家斐波拉契,在1202年出版的一书里提出了这样的一个问..”主要考查你对&&程序框图&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
程序框图的概念:
程序框图又称流程图,是一种用程序框、流程线及文字说明来表示算法的图形; 程序框图的构成:
一个程序框图包括以下几部分:实现不同算法功能的相对应的程序框;带箭头的流程线;程序框内必要的说明文字。
设计程序框图的步骤:
第一步,用自然语言表述算法步骤;第二步,确定每一个算法步骤所包含的逻辑结构,并用相应的程序框图表示,得到该步骤的程序框图;第三步,将所有步骤的程序框图用流程线连接起来,并加上终端框,得到表示整个算法的程序框图。
画程序框图的规则:
(1)使用标准的框图符号;(2)框图一般按从上到下、从左到右的方向画;(3)除判断框外,大多数程序框图中的程序框只有一个进入点和一个退出点,判断框是具有超过一个退出点的唯一符号;(4)在图形符号内描述的语言要非常简练清楚。&
几种重要的结构:
顺序结构、条件结构、循环结构。
发现相似题
与“意大利数学家斐波拉契,在1202年出版的一书里提出了这样的一个问..”考查相似的试题有:
302692340780334311273562795284265935java兔子面试题请教高手详细讲解? - 开源中国社区
当前访客身份:游客 [
当前位置:
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一
对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
public class lianxi01 {
public static void main(String[] args) {
System.out.println(&第 1 个月的兔子对数 : 1&);
System.out.println(&第 2 个月的兔子对数 : 1&);
int f1 = 1, f2 = 1, f, M=24;
for(int i=3; i&=M; i++) {
f2 = f1 + f2;
System.out.println(&第& + i +&个月的兔子对数: &+f2);
f2=f1(1)+f2(1)=2;
f1=f =f2(1)=1;
f2=f1(1)+f2(2)=3;
数学有些差,一个问题想不明白,f1=f =f2(1)=1;这里的f2为什么还是之前的f2(1),而不是运算加完之后的f2(2)呢?
---------------问题补充---------------
f2 = f1 + f2;
我疑问的是f=f2已经是经过上次循环完毕了,就是已经经过上次的”f2 = f1 + f2;“加运算后的,为什么f2传递给后面的f1后(f1=f,f=f2)怎么就成之前的(没有经过加运算的f2了呢),难道因为把f=f2放到了f2=f1+f2前面了吗?就是把f=f2放到了f2=f1+f2前面的作用,我不太明白?
f2=f1(1)+f2(1)=2;
f1=f =f2(1)=1;
f2=f1(1)+f2(2)=3;
f1=f =f2(2)=2;
f2=f1(2)+f2(3)=5;
f1=f =f2(3)=3;
f2=f1(3)+f2(5)=8;
f1=f =f2(5)=5;
f2=f1(5)+f2(8)=13;
f1=f =f2(8)=8;
f2=f1(8)+f2(13)=21;
大侠们看一下我的思路对不?
共有6个答案
<span class="a_vote_num" id="a_vote_num_
这不是最基本的斐波那契数列么?资料太多了,这种问题建议学会自己找答案。
<span class="a_vote_num" id="a_vote_num_
想不出来啊亲
<span class="a_vote_num" id="a_vote_num_
3月 & : 1 * 2
4月 & : 1 * 2
5月&& : 1 * 2 * 2
6月&& : 1 * 2 * 2
7月 & : 1 * 2 * 2 * 2
8月&& : 1 * 2 * 2 * 2
9月&& : 1 * 2 * 2 * 2 * 2
1 * 2 * 2 * 2 * 2
11月 : 1 * 2 * 2 * 2 * 2 * 2
第m月的兔子 : 1 * 2的(m - 1)/2次幂& 对兔子
f(m) = f(m - 2) * 2
定义函数f(m) :& // 第m月的兔子对数
&&&&&&&&m & 3 &&& return 1;
&&&&&&&&m &= 3&& return f(m-2) * 2;
<span class="a_vote_num" id="a_vote_num_
斐波那契数列,前两个数相加等于第三个数。举例,1,1,2 &1+1=2 ;1,1,2,3 1+2=3 可以得到一个公式fn = f(n-1)+f(n-2) ;
采用正向递归的话就是 if(n == 1 || n == 2) return 1 else return f(n-1) + f(n-2)
<span class="a_vote_num" id="a_vote_num_
用递归吗,不解?
<span class="a_vote_num" id="a_vote_num_
/**& * 斐波那契数列算法,从第三个数开始,每个数是前两个数之和:1 1 2 3 5 8 13 21 34 55& * 求第N个数的两种算法,分递归和非递归两种& */
&main(String[] args) {&
&&&&&&&&&&&&&&&&System.out.println(f(20));&
&&&&&&&&&&&&&&&&System.out.println(fx(20));&
&&&&&&&&}&
//递归方式&
&&&&&&&&&&&&&&&&
//参数合法性验证&
&&&&&&&&&&&&&&&&
&(n & 1) {&
&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(
&参数必须大于1!&
&&&&&&&&&&&&&&&&&&&&&&&&System.exit(-1);&
&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&
&(n == 1 || n == 2)&
&&&&&&&&&&&&&&&&
&f(n - 1) + f(n - 2);&
&&&&&&&&}&
//非递归方式&
&&&&&&&&&&&&&&&&
//参数合法性验证&
&&&&&&&&&&&&&&&&
&(n & 1) {&
&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(
&参数必须大于1!&
&&&&&&&&&&&&&&&&&&&&&&&&System.exit(-1);&
&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&
//n为1或2时候直接返回值&
&&&&&&&&&&&&&&&&
&(n == 1 || n == 2)&
&&&&&&&&&&&&&&&&
//n&2时候循环求值&
&&&&&&&&&&&&&&&&
&res = 0;&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&i = 3; i &= i++) {&
&&&&&&&&&&&&&&&&&&&&&&&&res = a +&
&&&&&&&&&&&&&&&&&&&&&&&&a =&
&&&&&&&&&&&&&&&&&&&&&&&&b =&
&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&
&&&&&&&&}&
更多开发者职位上
有什么技术问题吗?
Pwnie的其它问题
类似的话题古典问题:有一对兔子...
[问题点数:20分,结帖人zhujinqiang]
古典问题:有一对兔子...
[问题点数:20分,结帖人zhujinqiang]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2009年4月 Linux/Unix社区大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 古典问题 有一对兔子 的文章

 

随机推荐