C++ - 程序已停止工作

标签 c++ console-application

我在下面发布的代码应该可以在递归(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/

相关文章:

java - 从 Java 控制台应用程序和 ASP.NET 应用程序调用 Java

c# - 如何在 .Net 控制台应用程序中设置默认输入值?

c++回车换行长字符串后跟较短的字符串

c++ - C++ 中 std::reference_wrapper 和类型的编译器错误

java - 如何在编程语言中生成一些长度固定为 r 的同分布伪随机 vector ?

c++ - 枚举名称作为函数

c# - 如何将 HostControl 实例传递给 TopShelf 中的自定义主机服务?

android - 暂时以编程方式禁用 Qt 中的屏幕旋转

c++ - 我遇到过一些 C++ 代码。为什么我们必须在 block 中使用 *this 而不是 this?

c# - 如何从控制台应用程序运行 winform?