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

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

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

Разработать рекурсивный метод для вывода на экран всех возможных разложений натурального числа n на множители (без повторений). Например, для n=12 на экран должно быть выведено: 2*2*3=12 2*6=12 3*4=12 Подскажите пожалуйста, можно ли как-то по другому сделать данную рекурсию? Получилось только через запись элементов в массив, но в конце получается что еще выдает 12=12, а это значит ошибся где-то, но ошибку никак не могу найти
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Lab
  6. {
  7. class Program
  8. {
  9. static void F(int delitel, int n, int j, int m, int []a)
  10. {
  11. if (n == 1)//вывод на экран
  12. {
  13. for (int i = 0; i < j - 1; i++)
  14. Console.Write(a[i] + "*");
  15. if (j > 0)
  16. Console.WriteLine(a[j - 1] + "=" + m);
  17. return;
  18. }
  19. for (a[j] = delitel; a[j] <= n; a[j]++)//определение множителей
  20. if ((n % a[j]) == 0)
  21. F(a[j], n / a[j], j+1, m, a);
  22. }
  23. static void Main()
  24. {
  25. int[] a = new int[100];
  26. Console.Write("Введите число: ");
  27. int n = int.Parse(Console.ReadLine());
  28. int m = n;
  29. F(2, n, 0, m, a);//начальный делитель, число, начало массива, повторение числа, сам массив
  30. }
  31. }
  32. }

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

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

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


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

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

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы