我在下面发布的代码应该可以在递归(Sort() 函数)中工作,甚至可以达到 1kk 次。问题是:当 Sort() 函数进入循环编号 43385 时,控制台停止工作并警告:“程序已停止工作”。是不是内存有问题?如果是,代码的错误部分在哪里?问候。
#include <iostream>
#include <string>
using namespace std;
string a, b;
int n=0,i=0,counter=0;
int Sort(int i)
{
int x=0,y=0,tmp0=0;
char tmp1;
for(x=i;x<n;x++) {
if(a[x]==b[i]){
tmp0=x;
tmp1=a[x];
break;
}
else
continue;
}
for(y=tmp0;y>=i;y--)
y==i ? a[i]=tmp1 : a[y]=a[y-1];
counter+=tmp0-i;
if(i==n-1)
return counter;
else
Sort(i+1);
}
int main()
{
cin >> n >> a >> b;
Sort(0);
return 0;
}
最佳答案
可能是因为递归太深导致调用栈溢出?
关于C++ - 程序已停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938496/