| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12764 人关注过本帖, 1 人收藏
标题:若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有 ...
只看楼主 加入收藏
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
嗯,打字不够快,写贴时没有楼上的贴子。
不过楼上写的有点复杂,给个简约版的。
递归方法(效率不行):
int fun(int n)
{
    if(n < 4) return 1;
    return fun(n - 1) + fun(n - 3);
}
迭代方法(还好):
int fun(int n)
{
    int i, f1, f2, f3, f;
    f1 = f2 = f3 = f = 1;
    for(i = 4; i <= n; i++)
    {
        f = f1 + f3;
        f1 = f2;
        f2 = f3;
        f3 = f;
    }
    return f;
}


重剑无锋,大巧不工
2011-11-06 13:50
huanega
Rank: 3Rank: 3
来 自:内蒙古
等 级:论坛游侠
帖 子:117
专家分:192
注 册:2011-11-4
收藏
得分:0 
回复 11楼 beyondyf
对呢,7楼也对!

兴趣是编程最好的老师
2011-11-06 14:00
一只失语的猫
Rank: 2
等 级:论坛游民
帖 子:35
专家分:14
注 册:2011-10-26
收藏
得分:3 
#include<stdio.h>
#include<math.h>

void main ()
{
    int x, y, z, sum, year;
    sum = 1;
    printf ("Please enter the year:\n");
        scanf ("%d", &year);
    if (year < 4)
        sum = 1;
    else
    {
        x = year / 4;
        sum = sum * pow (2,x);
    }
    printf ("%d\n",sum);
}



用这个写比较容易吧!
2011-11-06 14:32
一只失语的猫
Rank: 2
等 级:论坛游民
帖 子:35
专家分:14
注 册:2011-10-26
收藏
得分:0 
对不起哦 看错了
2011-11-06 14:48
一只失语的猫
Rank: 2
等 级:论坛游民
帖 子:35
专家分:14
注 册:2011-10-26
收藏
得分:0 
#include<stdio.h>

void main ()
{
    int add (int y);

    int f, i, j;
    printf ("Please enter the year:\n");
    scanf ("%d",&j);
   
    f = add (j);
    printf ("%d\n",f);
}

int add (int y)
{
    int z, n;
    if (y < 4)
        z = 1;
    else
    {
        n = y / 4;
        z = add (y - 1) + n;
    }
    return z;
}


这次对了,运行过了,没问题。  菜鸟。
2011-11-06 15:38
yl291145401
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-10-31
收藏
得分:0 
各位大侠 小弟就是觉得公式不对啊 但是不知道那里出错 求给我大大指出
2011-11-06 21:15
ciky
Rank: 1
来 自:山东
等 级:新手上路
帖 子:4
专家分:2
注 册:2011-11-2
收藏
得分:0 
#include<iostream.h>
int main()
{
    int n;
    int s;
    int a=1;int b=0;int c=0;int d=0;
    cout<<"please input years:";
    cin>>n;
    for(int i=2;i<=n;i++)
    {
        int temp=d;
        d=d+c;
        c=b;
        b=a;
        a=d;
    }
    s=a+b+c+d;
    cout<<"the number is:"<<s<<endl;
}
2011-11-06 22:15
ciky
Rank: 1
来 自:山东
等 级:新手上路
帖 子:4
专家分:2
注 册:2011-11-2
收藏
得分:0 
没有最终的数学公式,就是用归纳法 先假设出第n年的然后求第n+1年的,我这里a表示一岁的 b两岁的 c三岁的 d代表可以生小牛的,代码在楼上。
2011-11-06 22:21
ciky
Rank: 1
来 自:山东
等 级:新手上路
帖 子:4
专家分:2
注 册:2011-11-2
收藏
得分:0 
我测了都对,可以改成c语言的
2011-11-06 22:23
ciky
Rank: 1
来 自:山东
等 级:新手上路
帖 子:4
专家分:2
注 册:2011-11-2
收藏
得分:3 
c语言版
#include<stdio.h>
#include<conio.h>
int main()
{
    int n;
    int s;
    int a=1;int b=0;int c=0;int d=0;
    printf("please input years:");
    scanf("%d",&n);
    for(int i=2;i<=n;i++)
    {
        int temp=d;
        d=d+c;
        c=b;
        b=a;
        a=d;
    }
    s=a+b+c+d;
    printf("the number is:%d",s);
}
2011-11-07 08:44
快速回复:若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n ...
数据加载中...
 
   



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

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