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