Рекурсивный метод всех возможных разложений натурального числа n на множители - C#

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

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

Разработать рекурсивный метод для вывода на экран всех возможных разложений натурального числа n на множители (без повторений). Например, для n=12 на экран должно быть выведено: 2*2*3=12 2*6=12 3*4=12 Подскажите пожалуйста, можно ли как-то по другому сделать данную рекурсию? Получилось только через запись элементов в массив, но в конце получается что еще выдает 12=12, а это значит ошибся где-то, но ошибку никак не могу найти
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lab
{
    class Program
    {
        static void F(int delitel, int n, int j, int m, int []a)
        {
            if (n == 1)//вывод на экран
            {
                for (int i = 0; i < j - 1; i++)
                    Console.Write(a[i] + "*");
                if (j > 0)
                    Console.WriteLine(a[j - 1] + "=" + m);
                return;
            }
            for (a[j] = delitel; a[j] <= n; a[j]++)//определение множителей
                if ((n % a[j]) == 0)
                    F(a[j], n / a[j], j+1, m, a);
        }
        static void Main()
        {
            int[] a = new int[100];
            Console.Write("Введите число: ");
            int n = int.Parse(Console.ReadLine());
            int m = n;
            F(2, n, 0, m, a);//начальный делитель, число, начало массива, повторение числа, сам массив
        }
    }
}

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

textual
Листинг программы
                if (j > 0 && a[j - 1] != m)
                    Console.WriteLine(a[j - 1] + "=" + m);

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


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

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

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