兔子的问题

warcraftmgq 2008-12-16 08:39:14
正在学习c++书本上一个兔子题
开始一个兔子,从第三个月开始每个月生一个兔子
生出来的兔子也是从出生开始第三个月开始生兔子,
兔子不会死,问N个月兔子的总量
大家帮我看看做的对不对。

#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char *argv[])
{
long all=1,y0=1,y1=0,y2=0,y3=0,i,tp;
cout<<setiosflags(ios::left)<<setw(5)<<"月份";
cout<<setiosflags(ios::left)<<setw(10)<<"新生兔子";
cout<<setiosflags(ios::left)<<setw(10)<<"一月兔子";
cout<<setiosflags(ios::left)<<setw(10)<<"二月兔子";
cout<<setiosflags(ios::left)<<setw(10)<<"生育兔子";
cout<<setiosflags(ios::left)<<setw(10)<<"兔子总数"<<endl;
for (i=0;i<=50;i++)
{
cout<<setiosflags(ios::left)<<setw(5)<<i;
cout<<setiosflags(ios::left)<<setw(10)<<y0;
cout<<setiosflags(ios::left)<<setw(10)<<y1;
cout<<setiosflags(ios::left)<<setw(10)<<y2;
cout<<setiosflags(ios::left)<<setw(10)<<y3;
cout<<setiosflags(ios::left)<<setw(10)<<all<<endl;
tp=y3;
y3+=y2;
y2=y1;
y1=y0;
y0+=y3-y0;
all=y0+y1+y2+y3;
}
system("PAUSE");
return EXIT_SUCCESS;
}

另外能用递归做吗?怎么做?
...全文
300 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
na2650945 2009-01-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 litaoye 的回复:]
可以用递归来做

f(n) = f(n-1) + f(n-3)
f(1) = 1
f(2) = 1
f(3) = 2
[/Quote]
学习了。
neeestth 2009-01-02
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 liushiyuyi 的回复:]
斐波那契数列
[/Quote]
今天刚看
liushiyuyi 2008-12-30
  • 打赏
  • 举报
回复
斐波那契数列
pkitjy0516 2008-12-29
  • 打赏
  • 举报
回复
我也是支持4楼

C++程序设计
上有详细的解
也是有用递归
aiversonwk 2008-12-28
  • 打赏
  • 举报
回复
就是兔子数列问题嘛,或者是斐波那契数列
f(n) = f(n-1) + f(n-3)
其中
f(1) = 1
f(2) = 1
f(3) = 2
vbcpascal 2008-12-27
  • 打赏
  • 举报
回复
1分,晕~~
菜子儿 2008-12-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zzhouxiaoyu 的回复:]
这是一个古罗马数学家伦纳德 斐波那契提出的有趣的问题。假定每对兔子每月生出一对小兔子,
新生的一对小兔子三个月后又可以生小兔子,假定所有兔子都不会死,一年后会有多少对兔子。具体说,第
一个月只有一对兔子,第二个月由于新生小兔子不能生育,仍然只有一对兔子,第三个月小兔子开始生育,因
此当月有两对小兔子,此后每个月的兔子数都是上个月和当月新生兔子数之和。由此可抽象出一个数列:
0,1,1,2,3,5,8,……。…
[/Quote]


同意。。。。。
sld666666 2008-12-20
  • 打赏
  • 举报
回复
恩 这就是斐波那契数列
int function(int n)
{if (n<1)
return 0;
else if(n==1)
return 1;
else return fuction(n-1)+fuction(n-2);
}
huzl1986 2008-12-19
  • 打赏
  • 举报
回复
这就是斐波那契数列
luoshuia 2008-12-19
  • 打赏
  • 举报
回复
main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld %12ld",f1,f2);
if(i%2==0) printf("\n");/*控制输出,每行四个*/
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
}
}
zzhouxiaoyu 2008-12-18
  • 打赏
  • 举报
回复
这是一个古罗马数学家伦纳德 斐波那契提出的有趣的问题。假定每对兔子每月生出一对小兔子,
新生的一对小兔子三个月后又可以生小兔子,假定所有兔子都不会死,一年后会有多少对兔子。具体说,第
一个月只有一对兔子,第二个月由于新生小兔子不能生育,仍然只有一对兔子,第三个月小兔子开始生育,因
此当月有两对小兔子,此后每个月的兔子数都是上个月和当月新生兔子数之和。由此可抽象出一个数列:
0,1,1,2,3,5,8,……。这个数列称为Fibonacii数列,
设计程序输出Fibonacii数列的前20项,要求每行输出5个数据。

#include<iostream>
using namespace std;
int main()
{
int i,s[20];
s[0]=0,s[1]=1;
for(i=2;i<20;i++) s[i]=s[i-2]+s[i-1];
for(int j=0;j<20;j++){
cout<<s[j]<<'\t';
if((j+1)%5==0) cout<<endl;
}
cout<<endl;
return 0;
}
mygod343434 2008-12-18
  • 打赏
  • 举报
回复
4楼正解
jefy01 2008-12-17
  • 打赏
  • 举报
回复
4楼支持一下
绿色夹克衫 2008-12-17
  • 打赏
  • 举报
回复
可以用递归来做

f(n) = f(n-1) + f(n-3)
f(1) = 1
f(2) = 1
f(3) = 2
w382120035 2008-12-16
  • 打赏
  • 举报
回复
斐波那契数列
liangbch 2008-12-16
  • 打赏
  • 举报
回复
哈哈,这个就是ACM上的母牛生小牛问题。
hznat 2008-12-16
  • 打赏
  • 举报
回复
不知道你从哪个教材找到这个题。兔子是单性生殖?!!!!!!!!!

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧