Рекурсивный метод всех возможных разложений натурального числа 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);