1

所以我在网上四处寻找,发现有人发布了一些作业问题,我想我想试一试。它处理一个类和一个我不想尝试的称为派生类的东西,(主要是因为我不知道那是什么),但我看到了这些要求,想知道它们是否都可以完成递归,使用类似 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];
}

虽然我不太确定用实际的 char 来做,但是为了练习和看看它是如何使用递归完成的,我不太担心天气它是一个 char 还是一个字符串,只是它可以工作。

检查一下,我找到了这个,(注意,我没有想出这个,一个叫 eazar001 的人做了......):

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

有谁知道如何处理列表中的其他内容,或者有什么可以指点我的东西,可以告诉我如何扫描字符串以查找这些东西,(尤其是大写和小写的东西,我不知道那里是有区别的)。感谢任何愿意在我尝试自学时带我学习这些东西的人!

4

1 回答 1

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);
}
于 2013-04-14T02:40:30.300 回答