问题标签 [infinite-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 投票
1 回答
62 浏览

recursion - 如果此代码具有基本情况,为什么它会在 SML 中生成无限递归?

我使用 NJ 编译器在 SML 中编写了以下代码:

它适用于以下测试:

然而,这个测试发生了一些奇怪的事情:

运行程序后,终端将永远运行。

我定义了尾递归并使用模式匹配xs'来到达尾。

此外,我定义了基本情况来结束递归,这样如果xs[],则辅助函数返回SOME accumulator

有谁能够帮我?

提前致谢。

0 投票
1 回答
68 浏览

recursion - Prolog flatten/2 实现

这是我的实现flatten/2

给出了预期的结果:

但是,当我达到;堆栈限制时。为什么会这样?无限递归在哪里?

谢谢。

0 投票
3 回答
281 浏览

python - 递归的替代方案?

我开始学习Python。现在我正在创建一个允许创建、查看或删除存储在 SQLite 3 DB 中的联系人的 CLI。问题是每次我完成一项任务时,我都会再次调用 main 函数,以便用户可以做其他事情。代码如下所示:

我很确定函数的连续调用会降低其性能,并且我认为可以调用递归函数的次数是有限制的,那么我应该如何再次调用 main 方法?

0 投票
0 回答
97 浏览

java - 为什么 Java 调用堆栈根据输入的顺序表现不同

我一直在做关于递归的功课,我意识到一些非常奇怪的事情。

在上面的代码中,程序检查数字中的数字是否从左到右递增。我要求用户输入输入n以找出每个数字将有多少位数字。程序可以完美地找到n 值 1 、 2 、 3 、 4。但是当我们以不同的顺序输入时,程序的行为很奇怪。例如,我可以输入任意数量的4,但是当我输入34时,程序infinite recursion会在printNumbers方法中崩溃。我不明白,因为程序适用于 3 和单独但我们输入 3,得到结果 我们输入 4 并且它崩溃 为什么它会崩溃?

PS:我做while(true)main method只是为了检查。下面是堆栈跟踪。

0 投票
2 回答
60 浏览

php - PHP递归函数不允许页面加载

我正在尝试在不包含另一个文件的路径以及文件名的文件的每一行中显示总数,但是如果它有另一个文件的路径,则循环遍历该文件并将其所有数字相加,并且只要当前文件中存在指向文件的路径,循环就会继续进行。

这是我的代码

我有 3 个我正在使用的 .txt 文件,在这些文件中我有这样的东西

第一个.txt


  • 1
  • 3
  • 3
  • 第二个.txt

第二个.txt


  • 2
  • 3
  • 第三个.txt

第三个.txt


  • 1
  • 2

我正在寻找的输出


  • 第一个.txt - 15
  • 第二个.txt - 8
  • 第三个.txt - 3

如果有人能指出我正确的方向,我将不胜感激,我不知道我是否做得对。

0 投票
1 回答
246 浏览

java - 无法在 WebSphere Application Server 8.5.5 中运行 JSF 1.1 应用程序

我有一个使用 Sun Java Studio Creator 构建的 JSF 1.1 应用程序的战争,该应用程序在 iPlanet 上运行,我必须在 WAS(WebSphere Application Server)8.5.5 上运行。由于无限递归,它无法显示欢迎页面。对 SO 上类似问题的回答指出,应删除捆绑在战争中的 JSF 库,以防止与 WAS 中的 JSF 运行时发生冲突,但在这种情况下它没有帮助。下面是堆栈跟踪

faces-config.xml 基本上是空的,web.xml 的相关部分是

0 投票
1 回答
102 浏览

spring-boot - 中间表映射的多对多关系中的无限 JSON

我有 2 个相互关联的实体。这两个实体应该以多对多关系相互映射,但是,我还需要它们各自关系的时间戳(当它发生时),所以我试图使用中间表来映射它们。

最初,这种关系是一对多的,但我意识到我实际上需要多对多,因为业务逻辑需要这样。结构还是一样的,因为有父子关系,但是这一次,一个孩子也应该有多个父母。

我的 BaseEntity 是一个抽象类,其中包含所有其他实体中存在的字段:

然后我有我的 2 个实体,它们应该以多对多样式关联。这是我的第一个实体,应该是父实体:

我的第二个实体被认为是子实体:

我也有我的中介实体:

现在的问题是,当我尝试获取我的 UserEntity 时,我得到了无限递归。

到目前为止,我已经尝试过使用@JsonIgnore、@JsonManagedReference、@JsonBackReference,但它不起作用,或者我根本不知道在哪里或如何正确使用它们。

回顾:

  • 2 个由多对多关系映射的实体;
  • 使用中间实体和一对多 + 多对一关联实现多对多;
  • 显示我的 UserEntity 时获得递归;

更新:我设法使用我对这个问题的回答中描述的不同方法来解决这个问题。

0 投票
0 回答
92 浏览

python - 无限调用python类变量

所以,我对 Python 还很陌生,我正在尝试了解 OOP 范式是如何在那里工作的。在这个阶段让我感到困惑的一件事是类变量。更具体地说,请考虑以下示例,该示例取自 Dusty Phillips 的Python 3 Object-Oriented Programming一书(第 3 章 - 当对象相似时):

因此,在这里我们看到一个简单的类示例,该类的类变量all_contacts是一个空列表。除此之外,还有两个实例变量nameemail. 现在,如果我们要创建类的两个不同实例Contact,例如

有两种方法可以访问属性nameemail,即

  1. c1.name
  2. c1.all_contacts[0].name

但这是我遇到问题的地方 -all_contacts是一个类变量,这意味着它对类的所有实例都是通用的Contact。不仅它对所有实例都是通用的,而且由于这个列表的填充方式,没有什么能阻止我这样做: c1.all_contacts[1].name 这给了我nameinstance 的属性c2。事实上,我似乎可以随心所欲地深入: c1.all.contacts[0].all_contacts[1].all_contacts[0]... 换句话说,我担心如果在 Python 中我们有一个带有类变量作为列表的类,然后在我们存储self到该列表的初始化方法中,是然后我们创建一个可以无限次引用自身的结构?有什么解决方法吗?

如果有人可以对此行为发表评论,我将不胜感激。

亲切的问候

0 投票
0 回答
31 浏览

python - 使用python对素数进行惰性计算而没有递归错误

我从电脑发烧友那里看到了这个关于惰性计算的精彩视频。在视频中,他们展示了一段非常漂亮的 Python 代码,它将使用筛法“懒惰”地计算素数

当您实际实现代码来计算大量素数时,问题就出现了。因为您是递归搜索,所以相对较快地达到递归深度。我只能计算一个素数2281

如果我修改代码以摆脱第一个函数的递归:

然后我可以12379在达到递归深度之前进行质数。

如果我正确理解代码,您需要递归以继续仅将主要候选数字(通过筛法)输入到sieve函数中。

有没有办法实现这种“惰性计算”算法来进行惰性计算而不使用递归,从而无限地计算素数而不会遇到递归限制障碍?

0 投票
2 回答
110 浏览

haskell - 为什么这个定点计算不停止?

我是 Haskell 的新手,我有以下代码:

我希望xs被评估为[1,2,3,4,2,4,4],因为那是固定点,即[1,2,3,4,2,4,4] == [1,2,3,4] ++ second [1,2,3,4,2,4,4]

但是,当我尝试xs在 GHCi 中进行评估时,我得到

但它不会停止计算。

谁能解释为什么这不会停止,是否有一种简单的方法可以使计算停止并返回[1,2,3,4,2,4,4]