Разработать рекурсивный метод для вывода на экран всех возможных разложений натурального числа 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
Листинг программы
using System;
using System.Collections.Generic;
 
class Program
{
    private static IEnumerable<IEnumerable<int>> Addends(int n, Stack<int> addends)
    {
        if (n == 0) yield return addends;
        for (int i = addends.Count == 0 ? 1 : addends.Peek(); i <= n; ++i)
        {
            addends.Push(i);
            foreach (var j in Addends(n - i, addends)) yield return j;
            addends.Pop();
        }
    }
 
    public static void Main()
    {
        foreach (var addends in Addends(5, new Stack<int>()))
        {
            Console.WriteLine(String.Join(" + ", addends));
        }
    }
}

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


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

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

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