解题思路:
注意事项:
参考代码:
#include <stdio.h>
static int new1 = 1, year=0; // 静态变量 ,new1:一年可生产数, year=每年可新蹭生产数
static int arr[55]={0,1,2,3,4}; //定义好一个数组,对应每年可生产数
static int i2 = 4; // 数组下标,第五年开始存储新的数据
int recursion(int n) //这个递归函数不知哪里错了,知道的并且可以的私信 一下
{
int sum=0;
int i=1;
if ( n <=4 )
return n;
sum = recursion(n-1);// 接收去年的总量
if ( n%4-1 == 0) // 对应4年生产条件
{
year++; // year=每年可新蹭生产数
}
new1 += year; //new1:一年可生产数,
sum = sum+new1; // 去年总数 + 今年生产量
return sum;// 返回今去年的总量
}
int array(int n)
{
i2 = 4; // 每次调用函数,都初始化下标为4
if ( n <= 4 )
return;
array(n-1); //递归到第4天,然后回归 ,不接收返回值,39行代码已经赋过值了
i2++; // 下标移一位,存今年的总量
arr[i2] = arr[i2-1]+arr[i2-3]; // 看别人的结果,发现的规律
//1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 6 9 13 19 28 41
return arr[i2]; //返回今年总量
}
void Myscanf(void)
{
int sum;
int n[55]; // 测试数据数组
int i;
for (i=0; i<55; i++ )
{
scanf("%d",&n[i]); // 录入
if ( n[i] == 0) break; // 0 退出
}
i = 0;
while(n[i] != 0)
{
if ( n[i] != 0 && n[i] < 55 ) // 数据大于0 并且 小于 55
{
sum = array(n[i]);
//new1 = 1;
//year = 0;
printf("%d\n",sum);
i++; //移动测试数据
}
}
}
int main()
{
Myscanf();
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复