首页 > 分享 > PTA 习题4

PTA 习题4

最新推荐文章于 2024-03-04 17:26:18 发布

原创 于 2018-12-03 22:27:23 发布 · 1.7w 阅读

· 27

· 108 ·

CC 4.0 BY-SA版权

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

习题4-11 兔子繁衍问题 (15 分)

一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?

输入格式:

输入在一行中给出一个不超过10000的正整数N。

输出格式:

在一行中输出兔子总数达到N最少需要的月数。

输入样例:

30

输出样例:

9

其实这就是斐波那契数列

斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(3)=2,F(n)=F(n-1)+F(n-2)(n>=4,n∈N*)——源自 百度百科

在编写时出现问题的时候,我也看到了一个博主的解答 “村口卖西瓜”

很认可 他说的  编程其实是最后的一环,数学和逻辑建模才是程序的灵魂。

########

每个月的兔子总对数可以归纳为一个分段函数:

f(n) = 1 (n=1,2)

f(n) = f(n-1) + f(n-2) (n=3,4,5)

要注意题目要求   要反复思考自己的逻辑,来检验正确性

#include<stdio.h>

int main(){

double sum;

int n1,n2,n3;

scanf("%lf",&sum);

int i;

if (sum==0||sum==1){

printf("1");

return 0;

} else if(sum==2){

printf("3");

return 0;

}

n1=1;

n2=1;

for(i=3;;i++){

n3=n1+n2;

if(n3>=sum){

break;

}

n1=n2;

n2=n3;

}

printf("%d",i);

}

cpp

运行

构造斐波那契数列的方法还有  ——  递归

f(n) = 1 (n=1,2)

f(n) = f(n-1) + f(n-2) (n=3,4,5)

根据分段函数构造出递归出口递归式子

#include<stdio.h>

int fun(int n);

int main(){

int sum;

for(int i = 0;i<10;i++)

printf("%d %dn",i,fun(i));

}

int fun(int n){

if(n==0||n==1)

return 1;

else

return fun(n-1)+fun(n-2);

}

cpp

运行

相关知识

PTA 习题4
习题
Python入门习题大全——宠物
国际市场营销部习题
习题4
执业兽医考试习题辅导讲义 宠物内科学重点提炼
一年级下册数学习题课件 210有多余条件的解决问题 人教新课标 共11张.ppt
2017下半年二级心理咨询师《心理测试》习题:综合心理
组织行为学第16版课后习题答案组织行为学第16版课后答案
《动物营养与饲料》习题试卷及答案

网址: PTA 习题4 https://m.mcbbbk.com/newsview1329216.html

所属分类:萌宠日常
上一篇: 递推公式解兔子繁殖问题
下一篇: 哈尔滨一小区宠物兔“越狱”,两年