免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: loveguohuasai
打印 上一主题 下一主题

[算法] 母牛数量算法 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2003-08-04 15:06 |显示全部楼层

母牛数量算法

我简单写了个递归算法,不知可以么?

我是按牛第四年开始生的,即第四年应该有5头牛,改了一下,应该没什么问题了!

  1.    
  2. long fun(int n){
  3. if (n>;3)
  4.    return fun(n-1)+fun(n-3);
  5. else if(n==3)
  6.    return 1;
  7. else if(n==2)
  8.    return 1;
  9. else if(n=1)
  10.    return 1;
  11. }
  12. main (){
  13. int n;
  14. printf("input n");
  15. scanf("%d",&n);
  16. printf("the result:%ld",fun(n));
  17. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2003-08-04 15:30 |显示全部楼层

母牛数量算法

非递归算法:

  1. long fun(int n){
  2. long a1=1;
  3. long a2=1;
  4. long a3=1;
  5. long a4=1;
  6. int i=0;
  7. long sum=0;
  8. for (i=4;i<n+1;i++){
  9.    a4=a1+a3;
  10.    a1=a2;a2=a3;a3=a4;
  11. }
  12. sum=a4;
  13.    return sum;
  14. }
  15. main (){
  16. int n;
  17. printf("input n");
  18. scanf("%d",&n);
  19. printf("the result:%ld",fun(n));
  20. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2003-08-05 08:50 |显示全部楼层

母牛数量算法

[quote]原帖由 "aero"]zlzj2010的做法里有一个致命的错误,并不是fun(n)=fun(n-1)+fun(n-3),是的确,fun(n-3)的牛在n年可以生牛了,但并不是仅仅这些牛可以生啊,fun(n-1)里也有很大一部分牛可以在第n年继续生小牛啊,你的程序里把这一部分漏掉了[/quote 发表:
     

我觉得地fun(n)年能生小牛的牛的不正是fun(n-3)么?fun(n-1)里是有牛可以生小牛,但它在第n年能生的刚好是fun(n-3)呀,

不只我这思路是否正确?

论坛徽章:
0
4 [报告]
发表于 2003-08-05 17:24 |显示全部楼层

母牛数量算法

原帖由 "wangz" 发表:
  
30年我只算出328头,怎么差这么多??
大家算个小一点的,比如10年,看看结果怎样,10年可以手工算出来: 18头。
大家看看自己的算法对不对!
   

不对把,10年应该是19头,

30年是39865
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP