Рекурсивный метод всех возможных разложений натурального числа 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д