我写了一个程序,显示用户输入的点之间的点。
例如:用户输入pointsA(1|1)B(10|10),因此程序返回在AB之间划一条线的所有点(因此(2|2) (3|3)(4|4)(5|5)(6|6)等…(想象一个二维数组)。
为了计算中间的点,我使用了一个递归函数,如下所示:

void line(struct point A, struct point B) {
    struct point M;
    if ((A.x - B.x >= -1 && A.x - B.x <= 1) && (A.y - B.y >= -1 && A.y - B.y <= 1)) {
        printf("P(%i|%i) P(%i|%i)\n", A.x, A.y, B.x, B.y);

    }
    else {
        M.x = (A.x + B.x) / 2;
        M.y = (A.y + B.y) / 2;
        line(A, M);
        line(M, B);

    }
}

现在我要可视化了,这意味着创建一个二维数组,它显示点a和B,中间的点可以是每个字符(例如(*或0)。既然我不知道如何保存递归函数的值,我该怎么做呢?我想了很多,但没有找到解决办法。

最佳答案

在递归函数中声明一个静态二维数组。最后返回数组。
这只是一个例子,但不是最终的解决办法。因此,您必须在代码中应用此示例:-

int** line(struct point A, struct point B)
{
   static int** array2D =(int **)malloc(somesize * sizeof(int *));

   static int i=0;
   static int j=0;

   .
   .
   M.x = (A.x + B.x) / 2;
   M.y = (A.y + B.y) / 2;

   array2D[i][j++] =  M.x;
   array2D[i++][j] =  M.y;
   .
   .

 return array2D;

关于c - 如何在c中保存递归函数的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49326872/

10-09 17:46