gpt4 book ai didi

c# - 带递归的嵌套函数

转载 作者:行者123 更新时间:2023-11-30 20:52:46 25 4
gpt4 key购买 nike

我查看了大量引用资料,发现 C# 通过 lambda 支持嵌套函数,但我对 C#(以及 .NET 而言)完全陌生。我想编写一个 flood-fill 实现,其中父函数的参数可供嵌套子函数访问。

理想情况下它应该是这样的:

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

Recursion(pixel,color); 调用是我的困惑所在。我无法从函数内部访问对该函数的引用。

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

最佳答案

按照建议,您可以使用递归委托(delegate)。通常,您会像这样声明一个委托(delegate):

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

在哪里 Func<int, int, int> 是接受 2 个整数并返回另一个整数的委托(delegate)类型。

但是因为你想让它调用自己,你必须在分配委托(delegate)之前声明变量。

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

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

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

关于c# - 带递归的嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20589681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com