Рекурсивная функция заполнения "случайной" матрицы - 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;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с массивами и генерацией случайных чисел.
  2. Определение размеров матрицы (M и N).
  3. Определение диапазона случайных чисел (A и B), которые будут использоваться при заполнении матрицы.
  4. Создание функции Init, которая будет рекурсивно заполнять матрицу случайными числами.
  5. Проверка условия, если значение переменной n меньше, чем произведение размеров матрицы (M*N), то рекурсивный вызов функции Init с увеличенным значением переменной n.
  6. Присваивание случайного числа элементу матрицы по индексу n % M, n % N и вызывание рекурсивного вызова функции Init с увеличенным значением переменной n.
  7. В функции main создается массив a размером MxN и вызывается функция Init с начальным значением переменной n равным 0.
  8. Функция main возвращает 0, что означает успешное завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы