На сколько квадратов с натуральными длинами сторон можно разрезать исходный прямоугольник? - C#

Узнай цену своей работы

Формулировка задачи:

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter a: ");
            int a = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Enter b: ");
            int b = Int32.Parse(Console.ReadLine());
 
            Console.WriteLine("The number of squares = " + Numsq(a, b));
            Console.ReadKey();
            }
        static public int Numsq(int a, int b)
        {
            int s = 0;
            if (b == 0)
            {
                return 0;
            }
            else
            {
                s = a/b + Numsq(b, a%b);
                return s;
            }
        
        }
_____________ Вот сама задача: Дан прямоугольник с со сторонами a, b. На сколько квадратов с натуральными длинами сторон можно разрезать исходный прямоугольник, если каждый раз от него отрезать квадрат максимально возможной площади? Решение я в общем-то списал, ибо долго не мог прийти ни к какому решению. А решение оказалось с рекурсией, которую я вообще не могу понять. Особенно строка
s = a/b + Numsq(b, a%b);
. Не могу понять какое значение принимает аргумент Numsq(b, a%b) и вообще что это значит и как оно работает, не могу понять смысл выражения в скобках, понимаю, что идёт обращение к функции, но никак не могу понять как она принимает какие-то значения. Вообще ни в какую. Почитал на форуме про рекурсию, ничего не понятно. Пожалуйста, объясните, как работают рекурсивные функции как можно подробнее, и в частности, как работает рекурсия конкретно в этом коде. Спасибо

Решение задачи: «На сколько квадратов с натуральными длинами сторон можно разрезать исходный прямоугольник?»

textual
Листинг программы
static public int cnt(int a, int b)
        {
            int s = 0;
            while (b != 0)
            {
                s += a / b;
                int t = b;
                b = a % b;
                a = t;
            }
            return s;
        }

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


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

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

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