【发布时间】:2014-12-09 20:32:09
【问题描述】:
我正在尝试编写一个递归算法来计算用户指定的字母。但是,我被困在两种情况下。首先,我想我必须得到2 结果,我不能。其次,如果没有限制键,例如用户指定为z的限制字符,如何将字符扫描到结束字符g?这个问题对我来说有点复杂。我需要你的建议和想法。谢谢大家的回答。
示例字符串为:how are you i am testing
另一个例子:
#include <stdio.h>
int lettercount(char* str, char key, char limit);
int main(){
char test[]="how are you i am testing";
int num;
num=lettercount(test,'a','t');
printf("%d",num);
return 0;
}
int lettercount(char* str, char key, char limit)
{
int count = 0;
if(str[0] == limit)
{
return 0;
}
else if(str[0] == key)
{
lettercount(&str[1], key, limit);
count++;
}
else
lettercount(&str[1], key, limit);
return count;
}
【问题讨论】:
-
除了检查它是否等于
limit之外,您还需要检查str[0]是否为NUL终止符'\0'。此外,您从lettercount函数返回一个count,但在递归调用该函数时忽略了返回值。 -
嗯,是的,您对 NULL 的看法是正确的。我返回数? @user3386109
-
你函数的最后一行是
return count;