可以通过值传递数组到递归函数吗?

我想编写一个递归函数,为问题构建所有可能的解决方案。 我想我应该传递一个数组,然后,在每个递归步骤中,将它设置为该递归步骤中可能的所有值,但后来我开始想知道这是否可行,因为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); } } } 

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

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

如果需要按值传递,则可以始终将数组包装到结构中并传递它。 请记住,您现在的struct包含的数组仍然需要足够大才能处理所有情况。

将其包装在结构中。

 typedef struct arr_wrp { int arr[128]; // whatever } arr_wrp; void recFunc(arr_wrp arr, int step) { // do stuff, then arr.arr[step] = i; recFunc(arr, step + 1); }