字符串和递归

Strings and Recursion

本文关键字:递归 字符串      更新时间:2023-10-16

我在网上浏览了一下,发现有人贴了一些作业问题,我想我也想试一试。它处理一个类和一个叫做派生类的东西,我没有兴趣尝试,(主要是因为我不知道那是什么),但我看到了这些要求,并想知道它们是否都可以用递归来完成,使用像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);
   }
 }

有没有人知道如何做列表上的其他的,或者有什么他们可以指向我,可以告诉我如何扫描字符串来寻找这些东西,(特别是大写和小写的东西,我不知道有一个区别)。感谢任何人愿意陪我走过这些东西,因为我试图自学!

int strlen1(char * s){
    if(*s=='') return 0;
    else return strlen1(++s)+1;
}
int lowercase_count(char *s){
    if(*s=='') 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=='') 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=='') return 0;
    else if(isVowel(*s)) return vowel_count(++s)+1;
    else return vowel_count(++s);
}