H2430823005


私信TA

用户名:dotcpp0787131

访问量:53

签 名:

等  级
排  名 10295
经  验 1096
参赛次数 4
文章发表 2
年  龄 0
在职情况 学生
学  校 贺州学院
专  业 数据科学与大数据技术

  自我简介:

TA的其他文章

解题思路:母牛递归前面四年就是一头母牛每年生一头小牛,从第五年开始,就变成了前一年的母牛数加上新出生的小牛,很显然,前一年的母牛数就是f(n-1),而新生的小牛数是f(n-3),因为只有3牛以前的母牛会生小牛,这个纯靠个人理解,对于新手来说,难的是每行输入一个数,以0为程序的终止,最后一起输出的问题。

这个问题引用数组比较好解决,首先要用数组存放你输入的每一个数,最后输入0的时候跳出输入的循环,转到输出这个数组里的每一个数带入母牛递归问题的解,所以需要两个循环,一个循环用来存放输入的数,另一个循环用来输出数组里面存放的值代入母牛递归中的解,话不多说,看代码。


注意事项:对于新手来说要格外注意数组索引要改变的问题。

参考代码:

#include

int fun1(int a)         //母牛递归问题求解的函数

{

int sum=0;

if (a<=4)

return a;

if (a>=5)

return fun1(a-1)+fun1(a-3); 

}                  

//下面到输入输出格式问题了

int main()

{

int arr[55];             //因为题目要求,先定义一个长度55的数组,可以存放55个数

int i=0;                   //这个i与b都是用来当索引的

int b=0;                //索引

while (scanf ("%d",&arr[i]),arr[i]!=0)                  //输入的不为0的数都存入数组中

{

i++;                    //i自加,代表存入数组的下一个地标

while (b<i)      //输入0跳出上面循环后,进入输出将数组值代入fun1中的值,也就是母牛递归问题的解

{

printf ("%d\n",fun1(arr[b]));          //先前已经定义了b=0,在此就是将数组中的第一个数字代入fun1

b++;                                                           //而后b自加,意味着将下一个数组中的值代入fun1

}

}


 

0.0分

0 人评分

  评论区

  • «
  • »