看似简单,思考了很久的编程题,大神求解???

输入n(1-10之间数字),将数字分解显示,如6可以显示为6,5+1,4+2,4+1+1.....

嵌套for循环+if else 判断语句,思路就是这样,
for i 0 ..9
for j 0..9
if i+j=输入值
printf .....
end if
大概就这样。。。。

http://ideone.com/bhnyWO

 1+1+1+1+1
1+1+1+2
1+1+3
1+2+2
1+4
2+3
5
 using System;
using System.Linq;
using System.Collections.Generic;

public class Test
{
    static int[] d;
    public static void Main()
    {
        int m = 5;
        var query = foo(new int[]{ }, m).Select(item => string.Join("+", item)).Distinct();
        foreach (var item in query)
            Console.WriteLine(item);
        Console.WriteLine(query.Count());
    }
    static IEnumerable<IEnumerable<int>> foo(IEnumerable<int> seed, int m)
    {
        if (seed.Sum() == m)
        {
            yield return seed;
        }
        else
        {
            if (seed.Count() == 0)
            {
                for (int i = 1; i <= m; i++)
                {
                    var items = foo(seed.Concat(new int[] { i }), m);
                    foreach (var item in items) yield return item;
                }
            }
            else
            {
                if (seed.Sum() < m)
                {
                    for (int i = seed.Last(); i <= m; i++)
                    {
                        var items = foo(seed.Concat(new int[] { i }), m);
                        foreach (var item in items) yield return item;
                    }
                }
            }
        }
    }

}