题目传送门
解题思路:
通读全文,得知,从一到二十年愚公家族只有一个人,从二十一到四十年,每年愚公家族增加一个人,从四十一到六十年,每年增加两个人。我一开始的思路是分段函数,当(0<n<=20) a = 1;(20<n<=40) a = n-19 ; (40<n<=60) a= 2n-59 ;但是C语言不能实现……请教大神之后说是思路错误……
换思路:联想斐波那契数列,采用递推或递归的思想,下面上斐波那契的代码:
同理可得该题的递推思想,不多说,上代码
#include <stdio.h>
int f(int n)
{
if(n >= 1 && n <= 20)
return 1;
else if(n >= 20 && n <= 40)
return f(n-1)+1;
else if(n >= 40 && n <= 60)
return f(n-1) + f(n-20);
}
int main()
{
int n;
while(scanf("%d",&n) != EOF)
printf("%d\n",f(n));
return 0;
}
【PS:怎么说呢?就感觉自己还是没有摸到C语言的皮毛,不知道看到一道题的正确思路,多多看题吧!!】