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

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

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

Разработать рекурсивный метод для вывода на экран всех возможных разложений натурального числа n на слагаемые (без повторений). Например, для n=5 на экран должно быть выведено: 1+1+1+1+1=5 1+1+1+2=5 1+1+3=5 1+4=5 2+1+2=5 2+3=5

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

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. class Program
  5. {
  6.     private static IEnumerable<IEnumerable<int>> Addends(int n, Stack<int> addends)
  7.     {
  8.         if (n == 0) yield return addends;
  9.         for (int i = addends.Count == 0 ? 1 : addends.Peek(); i <= n; ++i)
  10.         {
  11.             addends.Push(i);
  12.             foreach (var j in Addends(n - i, addends)) yield return j;
  13.             addends.Pop();
  14.         }
  15.     }
  16.  
  17.     public static void Main()
  18.     {
  19.         foreach (var addends in Addends(5, new Stack<int>()))
  20.         {
  21.             Console.WriteLine(String.Join(" + ", addends));
  22.         }
  23.     }
  24. }

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


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

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

15   голосов , оценка 4.067 из 5

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

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

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