C++ 如何制作一个递归函数来显示一个输入有多少个元音
我确实成功地创建了一个递归函数,但由于某种原因,*char的大小只有8,然后就停止了C++ 如何制作一个递归函数来显示一个输入有多少个元音,c++,arrays,recursion,char,C++,Arrays,Recursion,Char,我确实成功地创建了一个递归函数,但由于某种原因,*char的大小只有8,然后就停止了 int vocales(char *cd,int num){ if(num<=sizeof(cd)){ if(cd[num]=='a' || cd[num]=='e' || cd[num]=='i' || cd[num]=='o' || cd[num]=='u'){ return 1 + vocales(cd,num+1); }else{
int vocales(char *cd,int num){
if(num<=sizeof(cd)){
if(cd[num]=='a' || cd[num]=='e' || cd[num]=='i' || cd[num]=='o' || cd[num]=='u'){
return 1 + vocales(cd,num+1);
}else{
return 0 + vocales(cd,num+1);
}
}else{
return 0;
}
}
int人声(char*cd,int num){
如果(num您正在测试指针的大小,而不是数组的大小
编辑:
int人声(char-cd[],int-num){
如果(cd[num]!='\0'){
如果(cd[num]='a'| | cd[num]='e'| | cd[num]='i'| | cd[num]='o'| | cd[num]='u'){
返回1+个人声(cd,num+1);
}否则{
返回0+个人声(cd,num+1);
}
}否则{
返回0;
} }
sizeof
返回对象的大小。在这种情况下,对象是指针,而不是指向的项目。您需要找到一种新方法来确定何时到达字符串末尾
幸运的是,C样式的字符串以null结尾,因此您可以寻找终止符
int vocales(const char *cd) // no need for num.
// made cd const for a bit of extra versatility
{
char val = *cd; // get pointed-at character just for readability
if (val != '\0') // check for terminator
{
if (val == 'a' || val == 'e' || val == 'i' || val == 'o' || val == 'u')
{
return 1 + vocales(cd + 1); // advance pointer
}
else
{
return 0 + vocales(cd + 1);
}
}
else
{
return 0;
}
}
有改进的空间,例如正确处理大写元音,但是大部分编译器。
看起来你有一个64位的系统,你需要读什么<代码> sieOS/<代码>。sieZOF很可能应该是STROLN,但是我不知道CD是否是空的。而且因为这是标记C++,所以我建议使用ST。d::string而不是raw char*@macmake递归是一种寻找问题的解决方案。它可能是一个赋值。对我来说,它看起来相当优雅。@nicomp可能是stackoverflow上的stackoverflow…确实非常优雅…注释不用于扩展讨论;此对话已经结束。