我在给定程序中错了

where i am wrong in given program?

本文关键字:错了 程序      更新时间:2023-10-16

这是我的程序,用于查找给定集合的所有子集。为了解决这个问题,我使用了递归。但是当我在代码块上的窗口中编译它时。它给

此应用程序已请求运行时在 不寻常的方式。

在GCC编译器中,它没有显示任何答案,没有响应。

#include <iostream>
#include <vector>
#include <string>
using namespace std;
vector<string> findAllSubset(char c, vector<string> v) {
    int size = v.size();
    if(size == 1) {
        v.push_back("");
        return v;
    }
    c = v[size-1][0];
    v.pop_back();
    v = findAllSubset(c, v);
    for(int i = 0; i < v.size(); i++) {
        string s= "";
        if(v[i].size() == 0){
            s += c;
            v.push_back(s);
        }
        else {
            s += v[i] + c;
            v.push_back( s );
        }
    }
    return v;
}
main() {
    vector<string> v, ans;
    char c = 65;
    v.push_back("a");
    v.push_back("b");
    //v.push_back("c");
    //v.push_back("d");
    ans = findAllSubset(c, v);
    return 0;
}
for 循环

是一个无限循环,每次在向量中push_back元素时,向量大小都会增加,使得条件 i <v.size()>

在循环时,您不断将字符串推送到向量。有无限循环。在循环访问容器时更改容器通常是一个坏主意。

似乎有一个无限循环。程序编译并运行正常,但从不退出