#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 人评分
C语言训练-排序问题<1> (C++代码)浏览:633 |
【亲和数】 (C语言代码)浏览:590 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:702 |
不容易系列 (C语言代码)浏览:704 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1074 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:567 |
WU-拆分位数 (C++代码)浏览:819 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:593 |
1113题解浏览:825 |
Minesweeper (C语言描述,蓝桥杯)浏览:1179 |