刚开始做题,慢慢来吧,从水题开始...
做这题我的思路是: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;
}