问题标签 [anonymous-recursion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
781 浏览

recursion - Scheme中匿名函数调用自身的机制?

我正在阅读The Little Schemer并对以下代码感到困惑:

代码是判断空列表,否则永远不会停止。

为什么“ len”不是递归?

0 投票
2 回答
282 浏览

recursion - Little Schemer:编写只支持长度≤2的列表的函数

The little schemer一书中,我们发现这个函数只支持长度小于或等于1的列表:

我想逐步学习,并想编写仅支持长度小于或等于2的列表的类似函数。

请不要通过提供如下代码来回答这个问题:

因为这个函数支持任意长度。

而且我已经知道如何编写这样的函数:

实现我的目标。但是这段代码距离第一个代码片段不止一步。

也许,我不应该改变:

0 投票
1 回答
112 浏览

c# - 如何在 C# 中创建代表 Vandermonde 系统的大量 Func?

我正在尝试创建一个大范德蒙德数组的 Func。我可以像这样创建一个 4x3 系统:

但是编写像这样的大(比如 100x50)系统是不可行的,所以我认为我需要使用某种循环或递归,但我不知道怎么做。

这个页面解释了如何创建一个匿名递归来实现斐波那契函数,但我不知道如何利用那里解释的方法。

0 投票
2 回答
275 浏览

recursion - Little Schemer:为什么将 (mk-length mk-length) 包装成一个函数?

The Little Schemer book的第 9 章中,在为任意长输入构建length函数时,建议如下(在第 170-171 页),在以下代码片段中(来自第 168 页本身):

part (mk-length mk-length), 将永远不会返回,并将无限地应用于自身:

因为我们只是mk-length一次又一次地向自己申请......

但是现在我们已经(mk-length mk-length)从使它length不再返回函数的函数中提取出来了。

现在,为了解决这个问题,本书建议:

mk-length我们最后一个正确版本 of 中 to 自身的应用length变成一个函数。

就像,所以:

我感到困惑的是:

  1. 如果(mk-length mk-length)

    不返回函数

    我们如何将结果应用(mk-length mk-length)到某个东西上,就好像它是一个函数一样?

    /li>
  2. 包装(mk-length mk-length)成函数如何解决“永不返回”(即无限递归)问题?我的理解是,在:

    /li>

x只会被传递给永远不会返回的无限递归函数。

0 投票
7 回答
379 浏览

ocaml - 哪些编程语言支持将自身作为参数的函数?

我正在做学术练习(为了个人成长)。我想找到允许您定义能够接受自身(即指向自身的指针)作为参数的函数的编程语言。

例如,在 JavaScript 中:

上面的代码将在y达到零之前恰好执行foo() 11 次,从而导致递归终止。

我尝试在 OCaml 中定义一个类似的函数,如下所示:

但它因类型错误而失败:

我想知道,是否可以在 OCaml 中定义这样的函数?我对 OCaml 特别感兴趣,因为我知道它有一个全局类型推断系统。我想知道这些函数是否与全局类型推断兼容。因此,我正在寻找具有全局类型推断的任何语言中这些类型的函数的示例。

0 投票
3 回答
291 浏览

lambda - 在一个函数中生成幂集,没有显式递归,并且只使用 Racket 中最简单的原语

注意:这是家庭作业的奖励,但我花了太长时间尝试无济于事。非常感谢帮助,但我想没有必要。

前提: 为数字列表生成一个幂集,但不使用任何帮助器、显式递归、循环或除consfirstrestempty?emptyelselambda和之外的函数/常量cond,而仅define在语言级别使用一个Intermediate Student with Lambda。幂集的顺序无关紧要。

到目前为止我所尝试的: 感谢这篇文章,我发现了 Y-combinator 和匿名递归(作者的最终目标相同,但我们有不同的方法,所以他的帖子中的信息不能解决我的问题),以及这个答案powerset中的代码,并且我写了以下内容:

我正在通过运行测试此代码:

此代码运行并产生正确的结果,但是,如您所见,我仍然依赖于外部辅助函数,combine并且我不知道如何将其转换为 a,lambda因为据我所知,Y-combinator 仅适用于一个参数和combine需求 2. 也许我对这个问题的逻辑或方法有缺陷。我的经验有限,lambda所以我也可能缺少知识。

我需要帮助:关于下一步的任何建议,帮助我combine融入powerset,提供提示/线索以纠正逻辑/方法,或解决方案将不胜感激。

提前致谢!

0 投票
1 回答
87 浏览

parameters - 计划中的按需调用

我有这段代码知道参数是通过需要使用调用传递的:

我觉得我错过了一些东西,但是在需要调用foo这个对象 as的调用中f,它会计算f一次,然后永远不会更新resand n。这个对吗?我错过了什么吗?

谢谢你。

0 投票
3 回答
95 浏览

recursion - 是否可以在球拍中创建匿名递归函数

如果我有这样的递归函数:

我怎样才能制作它的 lambda 版本并且从不给它命名?...就像我想在某处内联它一样。那可能吗?(我的意思是在这种情况下我可以使用 fold - 所以这个例子可能不是那么好) - 是否有某种我无法找到的“自我”符号或占位符?或者你只需​​要给它一个名字。