Рекурсивная функция заполнения "случайной" матрицы - C (СИ)
Формулировка задачи:
Цель: Необходимо описать функцию с помощью рекурсии, которая заполняется случайными числами из диапазона их диапазона [x;y] двумерный массив 3х3.
Итерация - понятна. Но вот рекурсия... Застрял. Подтолкните пожалуйста на правильную "мозговую" дорожку.
Мысль такова - судя (могу ошибаться) из логики, рекурсия строится с конца и изначально определяются конечные действия, т.е таковыми являются заполнение последней строки матрицы.
Далее правильное (где-то прочитал не спрашивайте где) построение рекурсивной функции делится на 2-а блока сложная задача и более простая, т.е. насколько понимаю простой задачей будет заполнение каждой строки. В итоге максимум, чего добился с такой логикой - это безобразие:
Но сам понимаю, что это полная фигня. Помогите пожалуйста разобраться.
int Zapolnenie (int M [][3], int x, int y, int line=0, int stolb=0) { if (stolb>3) line++; stolb=0; M[line-1][stolb] = rand()%(y-x+1)+x; return Zapolnenie (M[line][stolb-1],x,y,line,stolb); }
Решение задачи: «Рекурсивная функция заполнения "случайной" матрицы»
textual
Листинг программы
#include<stdio.h> #include<stdlib.h> #define M 3 #define N 5 #define A -10 #define B 10 void Init(int a[M][N], int n) { if (n < M*N) { a[n % M][n % N] = rand() % (B - A + 1) + A; Init(a, n + 1); } } int main ( ) { int a[M][N]; Init(a, 0); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с массивами и генерацией случайных чисел.
- Определение размеров матрицы (M и N).
- Определение диапазона случайных чисел (A и B), которые будут использоваться при заполнении матрицы.
- Создание функции Init, которая будет рекурсивно заполнять матрицу случайными числами.
- Проверка условия, если значение переменной n меньше, чем произведение размеров матрицы (M*N), то рекурсивный вызов функции Init с увеличенным значением переменной n.
- Присваивание случайного числа элементу матрицы по индексу n % M, n % N и вызывание рекурсивного вызова функции Init с увеличенным значением переменной n.
- В функции main создается массив a размером MxN и вызывается функция Init с начальным значением переменной n равным 0.
- Функция main возвращает 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д