#include<stdio.h>
int main()
{
int n;
while(~scanf("%d",&n)){
if(n==0)break;
int a[n];
a[0]=1;a[1]=2;a[2]=3;
int i;for(i=3;i<n;i++){
a[i]=a[i-1]+a[i-3];
}
printf("%d\n",a[n-1]);}return 0;
}
代码如上,规律是类似于斐波那契数列的,f(n)=f(n-1)+f(n-3),列表不难发现,同时也可以数学上证明这个式子的正确性,利用归纳法。
原先,我是将其分为了两个部分,一个部分算成年母牛的,另一个算小牛的,原先我的方法是输出两者之和,后面,经过推导,我得到了上面的数列递归公式,并将其应用于代码之中,可以知道,代码永远是可以完善和改进的。谢谢阅读。
0.0分
2 人评分
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:637 |
C二级辅导-公约公倍 (C语言代码)浏览:2146 |
P1002 (C语言代码)浏览:1009 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:631 |
小明A+B (C语言代码)浏览:1298 |
P1001 (C语言代码)浏览:830 |
A+B for Input-Output Practice (II) (C语言代码)浏览:1024 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:1258 |
三角形 (C++代码)递归(存在大量重复计算,容易出现时间超限)浏览:830 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:586 |