用递归返回字符串中元音字母的数目

发布网友 发布时间:2024-10-24 12:51

我来回答

1个回答

热心网友 时间:2024-11-05 11:12

这个递归思想有问题啊。你这不是递归了。
#include<iostream>
#include<string>
using namespace std;
int func(string str,int i);
int count=0;
int main()
{
string str;
cout<<"please input the string :"<<endl;
cin>>str;
count = func(str,str.length() );
cout<<count <<endl; // 问题出在这,为什么我输出的是地址?
return 0;
}
int func(string str,int i)
{

if(i ==0)
return 0;
if(str[i-1]=='a'||str[i-1]=='e'||str[i-1]=='i'||str[i-1]=='o'||
str[i-1]=='u'||str[i-1]=='A'||str[i-1]=='E'||str[i-1]=='I'||str[i-1]=='O'||str[i-1]=='U')
return 1 + func(str, i-1);
else return func(str, i-1);
}追问嗯,我觉得你说的对。。。但是我明明调用自身了呀

追答递归算法要求:
递归算法所体现的“重复”一般有三个要求:
  一是每次调用在规模上都有所缩小(通常是减半);
  二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);
  三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。

递归算法都会追溯到最后可以直接给出答案,再依次倒回来得到跟大规模的解。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com