问题描述
我正在尝试理解递归。我创建了一个程序来计算 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 (将#修改为@)