我们给了一个具有任意长度str的字符串,任务是使用迭代方法和递归方法来计算给定字符串中辅音的数量。
辅音是不是元音的那些字母,即除a,i,e,o,u以外的字母都被视为辅音。因此,在下面的程序中,我们需要查找除字符串中的字母以外的其他字母的计数。
递归和迭代都重复执行指令集。递归是指函数中的语句重复调用自身时的情况。迭代是循环重复执行直到控制条件变为假。递归和迭代之间的主要区别在于,递归是一个过程,始终应用于函数,而迭代则应用于我们要重复执行的指令集。
Input − string str = “(niaoge.com)”Output − count is 8
说明-在给定的字符串str中,总共有8个辅音可用,分别是t,t,r,l,s,p,n和t。
Input − string str = “a e io u”Output − count is 0
说明-在给定的字符串str中,没有辅音可用,而是只有元音,因此count为0。
在一个变量中输入字符串,比如说str
使用该length()
函数计算给定字符串的长度,该函数将根据字符串中的字符数返回一个整数值
取一个临时变量来存储元素的数量。
从i开始循环到0,直到我小于字符串的长度
在循环内部,检查IF str [i]是否辅音,然后将count的值增加1
返回计数
打印结果。
// Iterative CPP program #include <iostream> using namespace std; //检查辅音的功能 bool consonant(char ch){ //处理小写字母 ch = toupper(ch); return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90; } //计数辅音的功能 int countconsonants(string s){ int result = 0; for (int i = 0; i < s.length(); i++){ //要检查字符是否为辅音 if (consonant(s[i])){ ++result; } } return result; } //主要功能 int main(){ string s = "wx abc def"; cout <<"count is: "<<countconsonants(s); return 0; }
输出结果
如果运行上面的代码,我们将获得以下输出
count is: 6
在一个变量中输入字符串,比如说str
使用该length()
函数计算给定字符串的长度,该函数将根据字符串中的字符数返回一个整数值
取一个临时变量来存储元素的数量。
创建一个递归函数,该函数将调用自身以计算字符串中的辅音
检查IF大小是否为1,然后返回str [0]。
然后,以(str,size-1)返回recursive_call_to_function +检查字符是否为字符串(str [size-1])
// Recursive CPP program #include <iostream> using namespace std; //检查辅音的功能 bool consonant(char ch){ //转换小写 ch = toupper(ch); return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90; } //计算辅音总数 int consonantcount(string str, int n){ if (n == 1){ return consonant(str[0]); } return consonantcount(str, n - 1) + consonant(str[n-1]); } int main(){ string str = "wx abc def"; cout <<"count is: "<<consonantcount(str, str.length()); return 0; }
输出结果
如果运行上面的代码,我们将获得以下输出-
count is: 6