带递归的嵌套函数

时间:2013-12-15 00:00:17

标签: c# recursion flood-fill

我看了很多引用,并且已经看到C#通过lambda支持嵌套函数,但我完全不熟悉C#(以及.NET)。我想写一个泛洪填充实现,嵌套子项可以访问父函数的参数。

理想情况下,这应该是什么样的:

private void StartFloodFill(color,otherstuff,pixel)
{
      function Recursion(pixel,color)
      {
             do(otherstuff);
             //etc...
             Recursion(pixel,color);
      }
}

Recursion(pixel,color);电话是我困惑的地方。我无法从函数内部访问函数的引用。

我知道应该有一个解决方法,但我不知道那是什么。如何实现上面在C#中演示的递归函数?

1 个答案:

答案 0 :(得分:4)

根据建议,您可以使用递归委托。通常,你会声明一个像这样的代表:

Func<int,int, int> = (a, b) => a+b;

其中Func<int, int, int>是占用2个int的委托的类型,并返回另一个int。

但是既然你想让它自己调用,你必须在分配委托之前声明变量。

Func<Pixel, Color, SomeType> func = null;

func = (pixel, color) => {
    //do stuff...

    if(endCondition)
       return someTypeValue;
    else
       return func(pixel, color);
};