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