(1)
这么简单的题目,当时没做出来,真是懊恼!!!
其实就是走台阶问题的简单变形!
解答:
n=1,2时,f(n)=1;
n=3时,f(n)=2;
n>3时,f(n)=f(n-1)+f(n-3);
#include<stdio.h>
int shuaqi(int n)
{
if(n==1||n==2) return 1;
if(n==3) return 2;
if(n>3) return shuaqi(n-1)+shuaqi(n-3);
}
void main()
{
int n;//道路长度
printf("请输入道路长度:");
scanf(" %d",&n);
printf("共有%d种刷漆方式!\n",shuaqi(n));
}
(2)
给定字符串,输出括号是否匹配,例如,
"()" yes;
")(" no;
"(abcd(e)" no;
"(a)(b)" yes。
要求必须用递归写,整个实现不可以出现一个循环语句。
#include<stdio.h>
void kuohao(char *str,int count)
{
if(*str=='\0')
{
if(count==0) printf("yes\n");
else printf("no\n");
return;
}
else
{
switch(*str)
{
case '(':
count++;
str++;
return kuohao(str,count);
//break;
case ')':
count--;
if(count<0)
{
printf("no\n");
return;
}
else
{
str++;
return kuohao(str,count);
}
//break;
default:
str++;
return kuohao(str,count);
}
}
//return;
}
void main()
{
char str[100];
printf("请输入括号表达式:");
scanf(" %s",str);
//fflush(stdin);
kuohao(str,0);
}