,我貼在下面應該在遞歸工作(在sort()函數)的代碼甚至高達1KK倍。問題是:當Sort()函數進入循環編號43385時,控制檯停止工作併發出警告:「程序已停止工作」。這是內存問題嗎?如果是的話,代碼的壞處在哪裏?問候。C++ - 程序已停止工作
#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;
}
它會崩潰在哪一行? – tenfour
之前排序第(i + 1)實際上只是或之後之前,我不能籤) – jwitos
一個幾句話:在別人繼續在第一個for循環是不需要的,循環繼續下一次迭代反正。 tmp0,tmp1不是有用的名稱。例如,更好的名稱可能是tmp0的索引,tmp1的值或類似的東西。用這些名字很難理解這些參數的含義。 –