问题链接:HDU2018 母牛的故事。入门训练题,用C语言编写程序。
问题简述:参见上述链接。
问题分析:菲波拉契数列是是十分有用的,可以用来描述动物的繁衍过程。本题就是其中一个例子,其递推关系类似于斐波拉契数列。
这个问题可以得出以下的函数递推式:
f(n)=n n<=4
f(n)=f(n-1) + f(n-3) n>4
对于上述的递推函数,最简单的做法是编写一个递归的函数来实现。实际上,本题的递推函数是可以用一个递推过程的函数来实现的,即不需要用递归函数来实现。用递推函数效率(计算的时间更少,使用的空间更小)会更高。
不过,递归函数也是常用的,这里是用递归函数实现计算过程。
程序说明:(略)。
AC的C语言程序如下:
/* HDU2018 母牛的故事 */ #include <stdio.h> // 递推式 f(n) = n n<=4,f(n) = f(n-1) + f(n-3) n>4 int cow(int n) { if(n <= 4) return n; else return cow(n-1) + cow(n-3); } int main(void) { int n; while(scanf("%d", &n) != EOF) { // 判定结束条件 if(n == 0) break; // 计算并输出结果 printf("%d ", cow(n)); } return 0; }