我编写了一个递归函数,该函数生成IEnumerable
IEnumerable<int> Go(int b )
{
if (b==0) yield return 0;
else
foreach (var element in Go(b-1))
{
yield return element;
}
}
所以如果我写
foreach (var element in Go(3))
{
Console.WriteLine (element);
}
它应该屈服
0
1
2
3
但这并不像预期的那样奏效。(显示0)。
在正常的递归函数(返回int而不返回Ienumerable)中,它工作得很好。
问题:
我如何修复代码,使它产生预期的值?
注意:不,没有理由使用递归IEnumerables。这是我玩过递归收益后才想到的。
又一个带有条件b==0
的变体
static IEnumerable<int> Go(int b)
{
if (b == 0)
{
yield return 0; //return 0 if b==0;
yield break; // say that iteration end;
}
foreach (var el in Go(b - 1))
{
yield return el;
}
yield return b; //return current b as element of result collection
}
或不使用屈服符
static IEnumerable<int> Go(int b)
{
if (b == 0)
{
yield return 0;
}
else
{
foreach (var el in Go(b - 1))
{
yield return el;
}
yield return b; //return current b as element of result collection
}
}
问题内容: 我已经为此奋斗了2天,尽我所能用Google搜索和stackoverflow,但是我无法解决。 我正在构建一个简单的节点应用程序(+ Express + Mongoose),其登录页面重定向到主页。这是我的服务器JS代码: 登录页面向发出POST请求,在此验证发布的数据。这可行。我可以在Node控制台中看到“我们在这里:’/ credentials’”。 然后是问题:res.redir
为什么我的搜索函数永远不会执行“else”(如果没有找到结果,else应该回显文本)?我在尝试显示所有结果时也遇到了一些问题(没有选择搜索标准,只需按搜索按钮)。我将上传页面的全部代码,因为我不知道您是否也需要HTML部分来解决问题。我知道这是一个很大的代码块,但如果可以的话,请帮忙。谢谢 以下是我的代码链接:http://pastebin.com/BXe1C0dr
基本上,这是注册的用户ID和每个用户订阅的组ID。我想编写一个安全规则,允许只有当用户是当前auth用户时才访问用户配置文件和子集合,根据我对文档的阅读,我认为通配符可以实现这一点... 这样,我就可以很好地读取文档,但是当我尝试读取子集合时,会出现权限错误。我只能通过显式匹配子集合来使它工作... ...所以我的问题是,这两个例子之间有什么区别,我对递归通配符有什么误解?我认为,第一个示例的部分
问题内容: 根据JavaDoc for ,该函数在比较期间不考虑比例。 现在,我有一个测试用例,看起来像这样: 我希望函数返回的值是10,小数位数为10。打印该值可显示预期的结果。但是该功能似乎并未按照我认为的方式工作。 这里发生了什么? 问题答案: 并 没有 代表0.7。 它代表0.69999999999999999999555910790149937383830547332763671875(
问题内容: 我是否错过了明显痛苦的事情?还是世界上没有人真正使用java.util.BitSet? 以下测试失败: 我真的不清楚,为什么我没有得到长度为2的BitSet和值为10的结果。我偷看了java.util.BitSet的源代码,并且在随意检查时似乎无法对两者进行足够的区分。设置为false且从未设置为任何值… (请注意,在构造函数中显式设置BitSet的大小无效,例如: 问题答案: 人们确
问题内容: 以下Dockerfile: 具有输出: 构建时(docker build命令) 看来RUN cd tmp123没有任何作用 为什么呢? 问题答案: 实际上是预期的。 泊坞窗文件不过是docker run + docker commit的包装器。 与做相同的事情: 每次运行时,都会生成一个新容器,因此pwd为’/’。 如果您愿意,可以在github上打开一个问题,以便向Dockerfil