gpt4 book ai didi

c - 如何使用递归访问n维数组

转载 作者:行者123 更新时间:2023-11-30 17:37:00 26 4
gpt4 key购买 nike

我设置 x 是包含多个变量的数组,这些变量是评估函数的输入。每个 变量具有在 xBoundary[index][min,max] 中定义的限制。每个可能的变量值都有步长xStep[]

例如x[0] 介于 010 之间,因为 xBoundary[0][0]=0 >xBoundary[0][1]=10xStep[0]=0.5 那么 x 的可能值为 0,0.5,1,1.5,.....9.5,10。如何获取 x 的所有可能值?我认为这是一个 n 维数组,其中 n = x 的长度

以下是我的代码。这是无限循环。

#include <stdio.h>

#define nx_SIZE 2 // dimension of x

double x[nx_SIZE] = {0}; // Initialize x
double xBoundary[nx_SIZE][2]={{0,5},{2,5}}; //Contains lower and upper boundary of x.
//xBoundary[][0]=min
//xBoundary[][1]=max
double xStep[nx_SIZE]={1}; //Step size for variable in x.

void iterate(int dimension) {


int i = dimension - 1;
double currentX, upperLimit;

if (i == -1){

printf("x: %f %f \n", x[0], x[1]);
//evaluate();

} else {

currentX = xBoundary[i][0];
upperLimit = xBoundary[i][1];

while (currentX < upperLimit){
x[i] = currentX;
iterate(i);
currentX = currentX + xStep[i];
} //End of while

}
}

int main (){

iterate(nx_SIZE);

return 1;
}

最佳答案

根据您的要求,这只是 nxSize 次的示例循环。尝试下面的代码(我没有测试它,您可能需要对其进行一些更新)

int i;
for (i = 0; i < nx_SIZE; i++) {
int v;
for (v = xBoundary[i][0]; v <= xBoundary[i][1]; v += xStep[i]) {
printf("%f", v);
}
printf("\n");
}

上面的代码基于nx_SIZE = 2,在您的示例中,如果nxSIZE是另一个值,您应该正确初始化xBoundary才能使其工作。

关于c - 如何使用递归访问n维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22525304/

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