Comment detail

自然数の分割 (Nested Flatten)

再帰 & yieldで

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;

class Program {
    static IEnumerable<string> PartNum(int n, int m) {
        if (m == 1) {
            yield return n.ToString();
        } else if (m > 1) {
            for (int i = 0; i <= n; i++)
                foreach (string s in PartNum(i, m - 1))
                    yield return (n - i).ToString() + ", " + s;
        }
    }
    static void Main(string[] args) {
        foreach (string s in PartNum(5, 3))
            Console.WriteLine(s);
    }
}

Index

Feed

Other

Link

Pathtraq

loading...