任务是通过两种方式将元素插入每个矩阵行:迭代和迭代。我已经完成了迭代,但是不了解如何将其更改为递归。感谢任何帮助。这是我的函数,n
-为行元素编号,key
-要在行中实现的值:
void insertSorted(int arr[], int n, int key)
{
int i;
for (i = n - 1; (i >= 0 && arr[i] > key); i--)
arr[i + 1] = arr[i];
arr[i + 1] = key;
}
这是代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 10
void insertSorted(int arr[], int n, int key)
{
int i;
for (i = n - 1; (i >= 0 && arr[i] > key); i--)
arr[i + 1] = arr[i];
arr[i + 1] = key;
}
int main()
{
int arr[MAX][MAX];
int row, col;
int i, key;
printf("Enter the matrix size:\nRows: ");
scanf("%d", &row);
printf("Cols: ");
scanf("%d", &col);
printf("\nEnter %dx%d matrix with sorted rows:\n", row, col);
for (int i = 0; i < row; i++)
for (int j = 0; j < col; j++)
scanf("%d", &arr[i][j]);
printf("\nBefore Insertion:\n");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++)
printf("%d ", arr[i][j]);
puts(" ");
}
printf("\nEnter the number to insert in rows: ");
scanf("%d", &key);
for (int i = 0; i < row; i++)
insertSorted(arr[i], col, key);
col++;
printf("\nAfter Insertion:\n");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++)
printf("%d ", arr[i][j]);
puts("");
}
return 0;
}
void RecursiveInsertSorted(int arr[], int n, int key)
{
if(n==0)
arr[n]=key;
return;
if(arr[n-1]>key){
arr[n]=arr[n-1];
RecursiveInsertSorted(arr,n-1,key);
}
else{
arr[n]=key;
return;
}
}