我写了一个程序,显示用户输入的点之间的点。
例如:用户输入pointsA(1|1)
和B(10|10)
,因此程序返回在A
和B
之间划一条线的所有点(因此(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/