Jac*_*Guy 4 c# recursion flood-fill
我查看了大量参考资料,发现 C# 通过 lambda 支持嵌套函数,但我对 C#(以及 .NET)完全陌生。我想编写一个洪水填充实现,其中嵌套子函数可以访问父函数的参数。
理想情况下,它应该是这样的:
private void StartFloodFill(color,otherstuff,pixel)
{
function Recursion(pixel,color)
{
do(otherstuff);
//etc...
Recursion(pixel,color);
}
}
Run Code Online (Sandbox Code Playgroud)
电话Recursion(pixel,color);是我困惑的地方。我无法从函数内部访问对该函数的引用。
我知道应该有一个解决方法,但我不知道那是什么。如何在 C# 中实现上面演示的递归函数?
正如建议的,您可以使用递归委托。通常,您会像这样声明一个委托:
Func<int,int, int> = (a, b) => a+b;
Run Code Online (Sandbox Code Playgroud)
其中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);
};
Run Code Online (Sandbox Code Playgroud)