Так что я должен рекурсивно заполнить квадратную матрицу. Для размера N = 5, оно должно быть:Как заполнить матрицу рекурсивно в C++?
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
но моя программа показывает:
1 1 1 1 1
1 2 2 2 1
1 2 3 3 1
1 2 2 2 1
1 1 1 1 1
void llenar5 (int** mat, int n, int f=0, int c=0,int k=2)
{
if (f<n)
{
if (c<n)
{
if (f==0 ||c==0||f==n-1||c==n-1)
{
*(*(mat+f)+c)=1;
llenar5(mat,n,f,c+1,k); //move to the right
}
else if (f==k-1 ||c==k-1||f==n-k||c==n-k)
{
*(*(mat+f)+c)=k;
llenar5(mat,n,f,c+1,k++);
}
}
llenar5(mat,n,f+1,c,k);
}
}
Я создаю матрицу в динамической памяти, и я попытался вызова функции llenar5 (mat, n, f + 1, c + 1, k + 1), чтобы перепрыгнуть столбец и строку при увеличении значений.
Я понимаю, что вы пытаетесь сказать, но мой профессор хочет назвать нашу процедуру рекурсивно, а не использовать другую функцию в нем рекурсивно. – user3053042