字符串和递归

时间:2013-04-14 02:04:18

标签: c++ string recursion

所以我在网上四处看看,发现有人发布了一些任务问题,我想我想去看看。它处理一个类和一个叫做派生类的东西,我不想尝试,(主要是因为我不知道那是什么),但我看到了这些要求,并想知道它们是否都可以完成递归,使用像void或int函数。这就是我所拥有的:

  

一个名为strLength的方法,它返回字符串的长度。

     

一个名为lowerCase的方法,它返回小写字符数。

     

一个名为upperCase的方法,它返回大写字符数。

     

一个名为vowelCnt的方法,它返回字符串中元音的数量。

     

一个名为charSum的方法,它返回字符串中所有字符的总和。

我想我能做到最后一个:

int charSum(string x, int i)
{
  if(x.size() == i)
    return (0 + x[i]);
  else
    return charSum(x, i + 1) + x[i];
}

虽然我不太确定用真正的字符来做它,但是为了练习和看看它是如何使用递归完成的,我不太担心天气它是一个字符串或字符串,只是那个它有效。

检查一下,我发现了这个,(注意,我没有提出这个,有人给eazar001做了......):

int countString(char sample[], int i, int total)
 {
   if(sample[i] == 0)
   {
       return total;
   }
   else
   {
       return countString(sample, i+1, ++total);
   }
 }

有没有人知道怎么做列表中的其他人,或者有他们可以指向我的东西可以告诉我如何扫描字符串来寻找这些东西,(特别是大写和小写的东西,我有不知道有什么区别)。 感谢一百万愿意在我尝试自学的时候带走我的人!

1 个答案:

答案 0 :(得分:1)

int strlen1(char * s){
    if(*s=='\0') return 0;
    else return strlen1(++s)+1;
}
int lowercase_count(char *s){
    if(*s=='\0') return 0;
    else if(*s>=97 && *s<=97+26) return lowercase_count(++s)+1;
    else return lowercase_count(++s);
}
int uppercase_count(char *s){
    if(*s=='\0') return 0;
    else if(*s>=65 && *s<=65+26) return uppercase_count(++s)+1;
    else return uppercase_count(++s);
}
int isVowel(char c){
    char v[10]={'a','e','i','o','u','A','E','I','O','U'};
    int i;
    for(i=0;i<10;i++)
        if(v[i]==c) return 1;
    return 0;
}
int vowel_count(char *s){
    if(*s=='\0') return 0;
    else if(isVowel(*s)) return vowel_count(++s)+1;
    else return vowel_count(++s);
}