社区
C语言
帖子详情
求牛的个数??
yjyita
2003-09-14 10:39:12
一头牛从它生下来的第四年开始生小牛,总N年后有多少头牛?
牛的个数
1,1,1,2,3,4,,5,7,10,14,19,26,36,……………………等等这样的增长,它是第一个数加第四个数,得第五个数。
请问你怎么写代码????
谢谢!!!
...全文
40
17
打赏
收藏
求牛的个数??
一头牛从它生下来的第四年开始生小牛,总N年后有多少头牛? 牛的个数 1,1,1,2,3,4,,5,7,10,14,19,26,36,……………………等等这样的增长,它是第一个数加第四个数,得第五个数。 请问你怎么写代码???? 谢谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
scpzhwang
2003-09-16
打赏
举报
回复
hylz0(斩左)
我觉得你写出代码来,算一下时间复杂度。就可以比较哪种比较快些。
goodluckyxl
2003-09-16
打赏
举报
回复
salaciouswolf(好好学习) ( ) 信誉:100
int T(int X)
{
if(X>=3)
{
T(X)=T(X-1)+T(X-3);
T(3)=1;
return();
}
else
return(1);
}
cnxiaohai
2003-09-16
打赏
举报
回复
不是Fibonacci数列
但和Fibonacci数列类似
julianyuan
2003-09-16
打赏
举报
回复
其实这个就是Fibonacci数列
F(1)=1
F(2)=2
F(n)=F(n-1)+F(n-2) (n>=3)
我是用C写的,程序可以这么写:
#include <stdio.h>
main()
{
long f0=1,f1=1;
int s=0,i,t,n;
t=f0+f1;
s=t+a1;
printf ("Bitte geben Sie die n ein:\n");
scanf ("%d",&n);
for (i=4;i<=n;i++)
{
s=s+t;
t=s-t;
}
printf("%d\n",s);
}
我也是刚学的,写的不好请各位指正
:)
dama2003
2003-09-16
打赏
举报
回复
int niu(int n)//递归函数
{
long i;
if(n<3) i=1;
else if(n==3) i=2;
else i=niu(n-1)+niu(n-4);
return i;
}
main()
{
int i;
long liu[40];
for(i=0;i<40;i++)
liu[i]=niu(i);
for(i=0;i<40;i++)
{
if(i%10==0)
cout<<endl;//每行打印十个数
cout<<liu[i]<<'\t';
}
cout<<endl;
}
(菜鸟)
slaker
2003-09-16
打赏
举报
回复
scpzhwang(快快乐乐) 的计算方法不错,值得学习...
buzhiming99
2003-09-16
打赏
举报
回复
请保存计算过的结果。
用空间换时间。
lieyanfriend
2003-09-16
打赏
举报
回复
补充:scpzhwang(快快乐乐) 是利用一个四个数的数组来存储即将相加的两个数。
这样的好处在于利用了有限的存储空间和简单的加法运算取代了占用资源过多的递归算法。
采用递归一般有两种形式:一种是利用公式:T(N)=T(N-1)+T(N-4)来做;
另一种是用递归分解来做,总的来说就是把N分解为已知的数据,这样已知的数据越多,算法也就越快。但是无论如何,用第一种方法最简便的。
lieyanfriend
2003-09-16
打赏
举报
回复
就我观察, scpzhwang(快快乐乐) 的代码是效率最高的。
用递归太慢,我用了两种递归的方法,当输入整数过大之后就不行了。
scpzhwang(快快乐乐) 的代码还应该再改进一下,采用int型数据太短,不能用于求70以后的整数(70以前的我也不确定,没有精确计算过)。采用double型数据可能要好一点。
jianshen77
2003-09-16
打赏
举报
回复
int T(int n)
{
if(n>3)
return (T(n-1)+T(n-4));
else
return 1;
}
binjuny
2003-09-16
打赏
举报
回复
#include <stdio.h>
int count=0;
int step=1;
int fun(int n){
int sum=0;
while(n){
sum+=step;
count++;
if ( count%4==0 )
step++;
n--;
}
return sum;
}
int main(){
int n;
printf("input n:");
scanf("%d",&n);
printf("result:%d\n",fun(n));
}
hylz0
2003-09-15
打赏
举报
回复
还是递归好
leefeng
2003-09-15
打赏
举报
回复
想快就用汇编写啊,也很简单嘛
scpzhwang
2003-09-15
打赏
举报
回复
salaciouswolf(好好学习)
用递归法写,速度可不太快呀.
你有写好的代码吗?让我看看行吗?
salaciouswolf
2003-09-15
打赏
举报
回复
用递归法写,很简单,给你一个公式:
T(N)= T(N-1)+T(N-3)
T(N)为N年的牛数!
scpzhwang
2003-09-15
打赏
举报
回复
我用VC++6.0写的,可能不是很好,但可以得出你要的结果。(写的不好,我也才学不久)
#include<iostream.h>
void main()
{
int n;
cout<<"请输入年限:";
cin>>n;
int sum[4]={1,1,1,2};
for(int i=0;(i<(n-1)/4);i++)
{
sum[0]=sum[0]+sum[3];
sum[1]=sum[1]+sum[0];
sum[2]=sum[2]+sum[1];
sum[3]=sum[3]+sum[2];
}
cout<<sum[(n-1)%4]<<endl;
}
TianGuangZao
2003-09-14
打赏
举报
回复
chinaunix.net 上讨论过,非常长的一个帖子。
http://chinaunix.net/forum/viewtopic.php?t=130156&sid=df86a378630fe80918bc47de15e5ebbb
【计算机视觉】OpenCV Python项目实战(3):物体计数
这是一系列关于OpenCV Python的视频课程,这是本系列课程的第3部分,主要讲解使用OpenCV API统计图像中物体的
个数
,并进行效果演示。 本系列课程使用Python 3.10和OpenCV4讲解。如果读者的...
末尾0的
个数
_牛客网
我们在计算n的阶乘时,实际上就是把所有小于等于n的正整数分解成质因数,然后再将其乘到一起,那么末尾0的
个数
实际上就是2*5的
个数
,而2的
个数
明显是很多很多的,所以问题就转化成了5的
个数
。 而只有5的倍数才有5这...
计算牛的
个数
//一只刚出生的小牛,4年后生一只小牛,以后每年生一只。现有一只刚出生的小牛,问20...然后在给1岁的牛的
个数
设置成4岁的牛的
个数
,即可*/var nius = [1, 0, 0, 0];var niu = function (year) { for (var i = 1 ; i
末尾0的
个数
链接 来源:牛客网 [编程题]末尾0的
个数
输入一个正整数n,求n!(即阶乘)末尾有多少个0?...解题思路:在我看到这道题后第一反应是用递归求出n的阶乘,然后用结果对10取余,得到尾数0的
个数
,然鹅我没有看到n是一...
二进制中1的
个数
(转)
f=discussion 来源:牛客网 题解 方法一:暴力方法 分析:题目给一个有符号的整数int,求整数转化成二进制数后,1的
个数
。...问题2:转化为二进制数后,如果判断有1的
个数
? 方法1:除2取模法。 int val; // in
C语言
69,335
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章