Как написать рекурсивный код по нахождению НОК?

Помогите реализовать рекурсию. Написал код для нахождения НОК двух чисел, но по заданию нужно использовать рекурсивный подход решения.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp5
{
class Program
{

    static double GCD(double a, double b)
    {
        double a1;
        a1 = a * b;
        if (b < 0)
            b = -b;
        if (a < 0)
            a = -a;
        while (b > 0)
        {
            double temp = b;
            b = a % b;
            a = temp;
        }
        return a1 / a;
    }

    static void Main(string[] args)
    {
        Console.WriteLine("***Введите 4 числа через пробел***");
        string s = Console.ReadLine();
        string[] x = s.Split(' ');
        double a = Double.Parse(x[0]);
        double b = Double.Parse(x[1]);
        double c = Double.Parse(x[2]);
        double d = Double.Parse(x[3]);
        a = LCM(a,b);
        Console.WriteLine("НОК={0}", a);
        Console.ReadLine();
    }
}
}

Ответы (1 шт):

Автор решения: Jagailo

Допустим, нужно найти НОК и НОД двух чисел, причём, что-то из этого нужно найти рекурсивно.

using System;

namespace Test
{
    internal static class Program
    {
        private static void Main()
        {
            Console.Clear();
            Console.WriteLine("Введите a и b:");
            Console.Write(" a = ");
            var a = Convert.ToInt64(Console.ReadLine());
            Console.Write(" b = ");
            var b = Convert.ToInt64(Console.ReadLine());

            var gcd = GetGCD(a, b);
            var lcm = a * b / gcd;

            Console.WriteLine($"\nНОД равен {gcd}\nНОК равен {lcm}");

            Console.ReadKey();
        }

        private static long GetGCD(long a, long b)
        {
            if (a == 0)
            {
                return b;
            }

            if (b == 0)
            {
                return a;
            }

            return a > b ? GetGCD(a % b, b) : GetGCD(a, b % a);
        }
    }
}

введите сюда описание изображения

Запустить онлайн

→ Ссылка