刚开始做题,慢慢来吧,从水题开始...
做这题我的思路是:f(n) = 3*f(n-2) + 2*f(n-4) + 2*f(n-6) + ... + 2*f(2)。从而得出递推方程。
代码如下:
#include<stdio.h>
int func(int n)
{
int sum = 0;
if(n == 0){
return 1;
}
if(n == 2){
return 3;
}
sum += 3 * func(n - 2);
for(n = n - 4; n >= 0; n = n-2 ){
sum += 2 * func(n);
}
return sum;
}
int main()
{
int n, num = 0;
scanf("%d", &n);
while(n != -1){
if(n % 2 == 1){
printf("%d\n", 0);
}
else{
num = func(n);
printf("%d\n", num);
}
scanf("%d", &n);
}
return 0;
}
int func(int n)
{
int sum = 0;
if(n == 0){
return 1;
}
if(n == 2){
return 3;
}
sum += 3 * func(n - 2);
for(n = n - 4; n >= 0; n = n-2 ){
sum += 2 * func(n);
}
return sum;
}
int main()
{
int n, num = 0;
scanf("%d", &n);
while(n != -1){
if(n % 2 == 1){
printf("%d\n", 0);
}
else{
num = func(n);
printf("%d\n", num);
}
scanf("%d", &n);
}
return 0;
}