母牛数量算法
若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年有多少头母牛?母牛数量算法
是不是老师出的题目,你拿到这里来找答案了,这样可不好,自己做出来才对母牛数量算法
呵呵,自己想想吧思考也是一种乐趣~~~
母牛数量算法
是呀,多多思考啊,自己找答案母牛数量算法
原帖由 "灰色轨迹"]是不是老师出的题目,你拿到这里来找答案了,这样可不好,自己做出来才对自己看书的,看到这道题想了很久都想不到,用递归
但是只是有点阻碍。
说说看
母牛数量算法
不用递归啊,想想规律用循环最好了。下面的代码调试过了。#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));
}
母牛数量算法
#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头牛?
母牛数量算法
原帖由 "灰色轨迹" 发表:}
不知道对不对
楼上的兄弟
第100年是不是234467045头牛?
我也差不多做出了,差不多像上面那个。
母牛数量算法
呵呵,上面大意了做错了。这回应该对了,用递归做的。刚才仔细想了想,没想出来用非递归做的方法。有一点想法:如果把这个数列看成是连续的,那么牛增长数量的函数似乎是一个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));
}
母牛数量算法
aero如果能推导一个公式出来应该可以不用递归了,这对数学基础要求就高了:(