69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
void totalCow(unsigned n)
{
unsigned years[5]={0,1},i = 1,new_born;/*years分别表示0-4岁的牛的总头数*/
printf("%uth: year\t%u\n",i,years[0] + years[1] +years[2] + years[3] + years[4]);
for(i = 2 ; i <= n; ++i)
{
new_born = years[1] + years[3];
years[4] = years[3];
years[3] = years[2];
years[2] = years[1];
years[1] = years[0];
years[0] = new_born;
printf("%uth: year\t%u\n",i,years[0] + years[1] +years[2] + years[3] + years[4]);
}
}
int main()
{
totalCow(80);
return 0;
}
long myfun(int year){
assert(year>=5);
long ini_1;
long ini_2;
long tmp;
if( year%2==0 ){
ini_1=2;
ini_2=4;
}
else if( year%2==1 ){
ini_1=1;
ini_2=2;
}
//递推求 裴波那契 序列
//奇数从 fun(5)=fun(1)+fun(3) 开始
//偶数从 fun(6)=fun(2)+fun(4) 开始
for(int i=5+((year+1)%2);i<=year;i+=2){
tmp=ini_1+ini_2;
ini_1=ini_2;
ini_2=tmp;
}
printf("%d years later total = %ld\n",year,ini_2);
return ini_2;
}