为什么一个具有收益率的函数不能递归?

Suj*_* Kp 0 c# recursion yield-return

我有一段这样的代码

class Program
{
    static IEnumerable<string> GetSequences(string a)
    {
        yield return a;
        GetSequences(a + ">");
    }

    static void Main(string[] args)
    {
        foreach (var n in GetSequences(">"))
            Console.Write(n + ",");
    }
}
Run Code Online (Sandbox Code Playgroud)

我期待这样的输出

,>>,>>>

但事实并非如此.它只打印">".有谁知道我错过了什么?

aba*_*hev 7

在函数本身中使用相同的foreach:

static IEnumerable<string> GetSequences(string a)
{
    yield return a;
    foreach (var n in GetSequences(a + ">"))
        yield return n;
}
Run Code Online (Sandbox Code Playgroud)

并且不要忘记退出递归.