loveguohuasai 发表于 2003-08-03 17:14

母牛数量算法

若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年有多少头母牛?

灰色轨迹 发表于 2003-08-03 18:10

母牛数量算法

是不是老师出的题目,你拿到这里来找答案了,这样可不好,自己做出来才对

threehair 发表于 2003-08-03 18:12

母牛数量算法

呵呵,自己想想吧
思考也是一种乐趣~~~

clion 发表于 2003-08-03 18:35

母牛数量算法

是呀,多多思考啊,自己找答案

loveguohuasai 发表于 2003-08-03 19:56

母牛数量算法

原帖由 "灰色轨迹"]是不是老师出的题目,你拿到这里来找答案了,这样可不好,自己做出来才对
   
自己看书的,看到这道题想了很久都想不到,用递归
但是只是有点阻碍。

说说看

aero 发表于 2003-08-03 20:57

母牛数量算法

不用递归啊,想想规律用循环最好了。下面的代码调试过了。
#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));
}

灰色轨迹 发表于 2003-08-03 21:11

母牛数量算法

#include <stdio.h>;


int cow(int all_cow, int can_born, int i_born, int ii_born, int iii_born, int year)
{
    all_cow += can_born;
    can_born += iii_born;
    iii_born = ii_born;
    ii_born = i_born;
    i_born = (all_cow - ii_born - iii_born)>;can_born?(all_cow - ii_born - iii_born):can_born;
    year--;
    if (year == 0)
    {
      return all_cow;
    }
    else
    {
      cow(all_cow, can_born, i_born, ii_born, iii_born, year);
    }
   
}

int main(int argc, char* argv[])
{
    if (argc != 2)
    {
      exit(-1);
    }
    printf("%d\n", cow(1, 0, 1, 0, 0, atoi(argv)));
}

不知道对不对   

楼上的兄弟
第100年是不是234467045头牛?

loveguohuasai 发表于 2003-08-03 22:08

母牛数量算法

原帖由 "灰色轨迹" 发表:
}

不知道对不对   

楼上的兄弟
第100年是不是234467045头牛?   

我也差不多做出了,差不多像上面那个。

aero 发表于 2003-08-03 22:31

母牛数量算法

呵呵,上面大意了做错了。这回应该对了,用递归做的。刚才仔细想了想,没想出来用非递归做的方法。有一点想法:

如果把这个数列看成是连续的,那么牛增长数量的函数似乎是一个n阶可导的函数。是不是这样的函数就必须用递归做,

用非递归就做不出来呢?

求非递归做法。

仔细想想,这题还是挺难的,不过,也许是我太面了,呵呵。

我的算法太不好了,算了2分钟了100的还没计算出来。

#include <stdio.h>;

int inc(int);

int fun(int n){                        /*计算第n年有多少牛的函数。*/
        if ( n==1 ) return 1;
        return inc(n)+fun(n-1);
}

int inc(int n){                        /*计算第n年牛的增长率的函数*/
        if ( n<5 )                return 0;
        else if ( n==5 )        return 1; /*满4周岁的时候开始生小牛,即第5年的增长率为1。*/
        else                         return inc(n-1)+inc(n-4);
}

int main(){
        int n;
        printf("\ninput n:");
        scanf("%d",&n);
        printf("result:%d\n",fun(n));
}

灰色轨迹 发表于 2003-08-03 22:48

母牛数量算法

aero

如果能推导一个公式出来应该可以不用递归了,这对数学基础要求就高了:(
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 母牛数量算法