- 论坛徽章:
- 0
|
回复 9楼 aero 的帖子
其实用递归也可以很快
改了一下aero的程序得到的,瞬间就能出结果了:
#include <stdio.h>
double inc_data[101];
bool not_calced[101];
double inc(int);
double fun (int n){ /*计算第n年有多少牛的函数。*/
if ( n==1 ) return 1;
return inc(n)+fun(n-1);
}
double inc (int n){ /*计算第n年牛的增长率的函数*/
if (not_calced[n]) {
if ( n<5 ) inc_data[n] = 0;
else if ( n==5 ) inc_data[n] = 1; /*满4周岁的时候开始生小牛,即第5年的增长率为1。*/
else inc_data[n] = inc(n-1) + inc(n-4);
not_calced[n] = false;
}
return inc_data[n];
}
int main() {
int n = 0;
for (n=0; n<=101; n++)
not_calced[n] = true;
for (n=1; n<=100; n++) {
printf("第%d年牛的数量:\t%14.0lf\n", n, fun(n));
}
return 0;
} |
|