如何使用指针在递归中遍历数组



我有一个函数,例如int trav(int **arr, int col, int row);。如果不使用向量、逐位运算符、静态变量或递归函数内的循环,我如何使用它来递归遍历使用该函数的数组?我的老师在课堂上教过这个,但我无法清楚地理解他想做什么。所以我来这里是为了在考试之前寻求帮助,结果我惨败了。我在这个网站上读到了很多类似的东西,但人们大多使用向量或逐位运算符,我们还没有学到这些,所以我不明白它们的意思。如果你能向我解释一下,我很好奇

这是针对c++

假设迭代函数

void trav(int **arr, int col, int row)
{
for (int i = 0; i != col; ++i) {
for (int j = 0; j != col; ++j) {
f(arr[i][j]);
}
}
}

使用一种一次性方法,它将是:

void trav(int **arr, int col, int row)
{
int i = 0;
int j = 0;
do {
f(arr[i][j]);
if (++j == row) {
j = 0;
++i;
}
} while (i != col);
}

递归函数可能看起来像:

void trav_rec(int **arr, int col, int row, int i = 0, int j = 0)
{
f(arr[i][j]);
if (++j == row) {
j = 0;
if (++i == col) {
return;
}
}
trav_rec(arr, col, row, i, j);
}

最新更新