温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c - Pass array by value to recursive function possible?
arrays c recursion

c - 通过值将数组传递给递归函数可能吗?

发布于 2020-03-27 16:19:15

我想编写一个递归函数,以构建问题的所有可能解决方案。我当时想我应该传递一个数组,然后在每个递归步骤中将其设置为该递归步骤中所有可能的值,但随后我开始怀疑这是否可行,因为C通过传递指针传递了数组。您通常如何处理?

我在考虑这些思路。数组将根据选择的路径采用许多不同的值。我想我们真正想要的是按值传递数组。

recFunc(int* array, int recursiveStep) {
    for (int i = 0; i < a; i++) {
        if (stopCondition) {
            doSomething;    
        }
        else if (condition) {
            array[recursiveStep] = i;
            recFunc(array, recursiveStep+1);        
        }
    }
}

查看更多

查看更多

提问者
sporetrans
被浏览
31
Kerrek SB 2013-04-19 06:18

您可以通过将值粘贴到结构中来按值传递数组:

struct foo { int a[10]; };

void recurse(struct foo f)
{
    f.a[1] *= 2;
    recurse(f);    /* makes a copy */
}