解题思路:
首先需要实现循环输入,题目条件给出当输入0的时候程序结束,当输入其他数字时会返回那一年的母羊数量,所以我们可以采用一种循环嵌套条件语句的形式,当输入0的时候利用break跳出循环即可,当输入的不是0的时候可以使用一个递归函数,输出当时的函数值。
通过对前几年的数据进行分析,f(1)=1;f(2)=2;f(3)=3;f(4)=4;f(5)=6……可以看出f(4)=f(3)+f(1);f(5)=f(4)+f(2)……可以利用数学归纳法得出f(n)=f(n-1)+f(n-3),也可以利用题目条件进行分析,第n年所包含的母羊数量,既包括了第n-1年的母羊数量,也包含了在当年出生的小羊数量,由于刚刚出生的小母羊在四年之后才会生出其他小羊,所以在第n年出生的小羊数量均为在n-3年的母羊所生,因为在第n-3年的小羊正好到了四年的期限,且第n-1、n-2年出生的小羊仍不具有生殖能力。
综上所述,可以得出f(n)=f(n-1)+f(n-3)的递归关系式,只需要给出f(1)=1;f(2)=2;f(3)=3的初始条件,便可以利用函数的自身调用实现递归。
注意事项:
参考代码:
#include <stdio.h>
#include <math.h>
//递归函数的使用
int Num(int n)
{
//给定初始化条件
if (n == 1)
{
return 1;
}
else if (n == 2)
{
return 2;
}
else if (n == 3)
{
return 3;
}
else if (n == 4)
{
return 4;
}
//当n>3的时候,实现递归
else
{
return Num(n - 1) + Num(n - 3);
}
}
int main()
{
int n = 0;
while (1)
{
scanf("%d", &n);
if (n == 0)
{
break;
}
else
{
printf("%d\n", Num(n));
}
}
return 0;
}
0.0分
2 人评分
字符串的输入输出处理 (C语言代码)浏览:2055 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:644 |
求圆的面积 (C语言代码)浏览:1366 |
不会做的浏览:954 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1258 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:956 |
文科生的悲哀 (C语言代码)浏览:1538 |
DNA (C语言代码)浏览:440 |
sizeof的大作用 (C语言代码)浏览:1138 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:725 |