| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12764 人关注过本帖, 1 人收藏
标题:若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有 ...
只看楼主 加入收藏
yl291145401
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-10-31
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:22 
若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛?
#include<stdio.h>
#include<conio.h>
int fun(int);
int main()
{
    int n;
    printf("Please input the year(s):");
    scanf("%d",&n);
    printf("the total %s %d",n>3?"are":"is",fun(n));
    getch();
    return 0;
}
int fun(int years)
{
    return (years<4?1:2*fun(years-4));
}  
  我做出来无解啊 求高人
搜索更多相关主题的帖子: 母牛 include return 
2011-11-06 12:30
huanega
Rank: 3Rank: 3
来 自:内蒙古
等 级:论坛游侠
帖 子:117
专家分:192
注 册:2011-11-4
收藏
得分:3 
你算法错误!!
程序代码:
#include<stdio.h>
#include<conio.h>
int fun(int);
int main()
{
    int n;
    printf("Please input the year(s):");
    scanf("%d",&n);
    printf("the total %s %d",n>3?"are":"is",fun(n));
    getch();
    return 0;
}
int fun(int years)
{
    return (years<=4?1:(1+(years-4)));
}  


[ 本帖最后由 huanega 于 2011-11-6 12:43 编辑 ]

兴趣是编程最好的老师
2011-11-06 12:40
yangyangsasa
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2011-11-6
收藏
得分:3 
我也觉得算法不对,那递归不对吧
2011-11-06 12:50
wuyijiang07
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:74
专家分:177
注 册:2011-10-21
收藏
得分:3 
算法肯定是有问题了,不过二楼的算法好像也不对吧
2011-11-06 13:26
huanega
Rank: 3Rank: 3
来 自:内蒙古
等 级:论坛游侠
帖 子:117
专家分:192
注 册:2011-11-4
收藏
得分:0 
回复 4楼 wuyijiang07
应该没问题吧,请指教

兴趣是编程最好的老师
2011-11-06 13:34
wuyijiang07
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:74
专家分:177
注 册:2011-10-21
收藏
得分:0 
回复 5楼 huanega
我感觉楼主题目的意思,是说第四个年头就开始生,第四年就应该有两头母牛,第五年应该就有3头,个人观点不知道说的对不对
2011-11-06 13:38
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:3 
程序代码:
/*
根据题意可知:
第1年到第N年母牛的头数分别为1,1,1,2,3,4,6,9,13,。。。。。
可设:f(n)表示第N年的母牛头数,则
f(1)=1;f(2)=1;f(3)=1
f(4)=f(1)+f(3);
f(5)=f(2)+f(4);
f(6)=f(3)+f(5);
   。
   。
f(n)=f(n-3)+f(n-1);(n>3)
*/

#include <stdio.h>

int main()
{
    int n, i=1;
    int f1, f2, f3;
    printf("请输入年数:\n");
    scanf("%d",&n);

    while(i <= n)
    {
        if(i == 1)
        {
            f1 = 1;
            i++;
            continue ;
        }
        else if(i == 2)
        {
            f2 = 1;
            i++;
            continue ;
        }
        else if(i == 3)
        {
            f3 = 1;
            i++;
            continue ;
        }
        else if(i%3 == 1)
        {
            f1 = f1 + f3;
            f2 = f2 + f1;
            f3 = f3 + f2;
            i++;
            continue;
        }
        i++;
    }
    printf("第%d年的母牛有%d头\n",n,((n%3==1)?f1:((n%3==2)?f2:f3)));
    return 0;
}


[ 本帖最后由 liao06550107 于 2011-11-6 13:49 编辑 ]

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2011-11-06 13:38
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:3 
公式都不对。该问题的递推公式是:
F[1] = 1
F[2] = 1
F[3] = 1
F[n] = F[n - 1] + F[n - 3]
按照这一公式重写吧。

重剑无锋,大巧不工
2011-11-06 13:40
huanega
Rank: 3Rank: 3
来 自:内蒙古
等 级:论坛游侠
帖 子:117
专家分:192
注 册:2011-11-4
收藏
得分:0 
回复 6楼 wuyijiang07
哦,那就是理解差异,算不上什么算法错误,如果第四年2头的话改成
程序代码:
#include<stdio.h>
#include<conio.h>
int fun(int);
int main()
{
    int n;
    printf("Please input the year(s):");
    scanf("%d",&n);
    printf("the total %s %d",n>3?"are":"is",fun(n));
    getch();
    return 0;
}
int fun(int years)
{
    return (years<=3?1:(2+(years-4)));
}  


[ 本帖最后由 huanega 于 2011-11-6 13:49 编辑 ]

兴趣是编程最好的老师
2011-11-06 13:42
huanega
Rank: 3Rank: 3
来 自:内蒙古
等 级:论坛游侠
帖 子:117
专家分:192
注 册:2011-11-4
收藏
得分:0 
回复 8楼 beyondyf
好吧,是错了!楼主的意思第一年1头,等到第四年2头,第7年时,第二头母牛又能生牛了

[ 本帖最后由 huanega 于 2011-11-6 13:57 编辑 ]

兴趣是编程最好的老师
2011-11-06 13:48
快速回复:若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013929 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved