gpt4 book ai didi

c - 如果 vector 太大,我的程序会崩溃吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:23 26 4
gpt4 key购买 nike

当我用大于 12 个元素的大 vector 测试我的程序时,它崩溃了(我得到一个 lldb 错误)。但是,它适用于小 vector 。我认为它正在尝试访问不应该访问的内存空间,但我不知道如何修复它。该程序应该打印出元素总和等于“目标”的 vector 另外,我可以用不同的方式表达:if (i & (1 << j)) 吗?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int c = 0;
/* find subsets of a given set */
void findSubsets(int *value, int n, int i) {
int j;
if (i < 0)
return;

for (j = 0; j < n; j++) {
/*
* checking jth bit is set in i. If
* it is set, then fetch the element at
* jth index in value array
*/
if (i & (1 << j)) {
suma = suma + value[j];
}

/* recursive call */
findSubsets(value, n, i - 1);
return;
}

int main() {

/* 2^n - indicates the possible no of subsets */
int count = pow(2, size);

/* finds the subsets of the given set */
findSubsets(vector, size, count - 1);

return 0;
}

我希望能够将此程序用于大 vector (最多约 20 个)

最佳答案

问题是您得到了 52428810 递归函数调用。这将导致堆栈溢出。尝试迭代而不是递归:

for (int i = 0; i < count; i++) {
findSubsets(vector, size, i);
}

并删除 findSubsets 中的递归调用。

关于c - 如果 vector 太大,我的程序会崩溃吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57901840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com