【发布时间】:2020-09-24 01:05:30
【问题描述】:
如果我错了,请纠正我,但我在网上找不到像这样直截了当的东西。 假设您有以下内容:
static Func<int,int> GetInt(int n)
{
return (int y) =>
{
if (y < 2)
return (y);
return
GetInt(n - 1)(y) - GetInt(n - 2)(y);
};
}
尝试通过调用此匿名函数来获取结果会返回类似 System.Func`2[System.Int32,System.Int32] 的内容。 如何使用匿名函数实现递归。为了得到结果,我如何转换作为实际函数的返回值?
【问题讨论】:
-
...但是为什么要使用匿名函数呢?给那只小狗起个名字,让它更容易理解?
-
这个函数到底有什么意义?第一次调用将返回匿名函数,随后的调用将调用创建更多匿名函数。我不认为这个想法是为了使功能无效
-
@OptionalOption 这是编写适当的匿名递归函数的第一步......主要是教育练习,但有助于更深入地理解语言 - weblogs.asp.net/dixin/…,或搜索“C# y 组合器”(不要与同名网站混淆)。
-
请注意,您期望此代码执行的操作非常令人困惑(正如@OptionalOption 指出的那样,帖子中显示的内容将堆栈溢出)...通常人们以 n 开头!或斐波那契数,当他们尝试递归时 - 问题中的样本在尝试计算的值方面非常混乱。
-
变量
n甚至没有在这个函数中使用。它已经被淘汰了。
标签: c# linq recursion anonymous-function