解题思路:

注意事项:

参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论