如何解决使用递归的子串数
我正在尝试理解递归。我创建了一个程序来计算 n 个字符的字符串中的子字符串数。 Ans 应该是 n*(n+1)/2。但是对于 2 个字符的字符串,我得到 2 个作为 ans,而对于 3 个字符,它会进入无限循环。
int num_substring(string str,int &sidx,int eidx,int &num) {
cout<<"sidx == "<<sidx<<" eidx == "<<eidx<<"num "<<num<<endl;
if(sidx >= str.length()-1) return num; // counted all substrings
//move starting index and start finding new substrings.
if(eidx == str.length()-1) {
sidx = sidx+1;
eidx = sidx;
cout<<"eidx reached"<<sidx<<" "<<eidx<<endl;
}
for(int i = sidx; i<= eidx; i++){
++num;
num_substring(str,sidx,i+1,num);
cout<<"sidx after "<<sidx<<endl;
}
return 0;
}
int main()
{
string str = "ab";
int num = 0;
int sidx = 0;
num_substring(str,num);
cout<<num<<endl;
}
输出是
sidx == 0 eidx == 0num 0
sidx == 0 eidx == 1num 1
eidx reached1 1
sidx == 1 eidx == 2num 2
sidx after 1 ---> why is sidx 1? Shouldnt it be 0
sidx after 1
2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。