小编nan*_*ous的帖子

在Mathematica中,为什么递归函数中的替换不会终止?

想象一下,我在Mathematica中定义了一个递归因子,如下所示:

Clear[fact]
fact[0] = 1
fact[n_] := n fact[n - 1]
Run Code Online (Sandbox Code Playgroud)

评估事实[10]证实该功能有效并终止.

这是一个主要的例子,但它在这个问题中起到了作用.实际上,无论如何,我的问题一般都与递归函数定义有关.

我期望评估以下替换以终止:

x fact[x-1] /. x -> 2
Run Code Online (Sandbox Code Playgroud)

唉,它运行到递归深度限制:

$RecursionLimit::reclim: Recursion depth of 256 exceeded.
Run Code Online (Sandbox Code Playgroud)

我希望看到类似的东西:

2 fact[2-1]
Run Code Online (Sandbox Code Playgroud)

或只是价值

2
Run Code Online (Sandbox Code Playgroud)

更新:事实 的另一种递归定义确实按预期工作:

Clear[fact]
fact[n_] := If[n < 1, 1, n fact[n - 1]]
Run Code Online (Sandbox Code Playgroud)

但是这个事实(双关语意图;-)让我更加神秘:它为什么表现得如此不同?

我的问题是双重的:

  1. 即使有内置的帮助和搜索网络的线索,我也无法解释为什么Mathematica坚持,显然,保持符号结果,而不是评估"中间"结果并很好地终止.谁冒险进行了可行的解释?

  2. 我如何说服Mathematica根据我的预期执行(除了使用If [] 之外的替代方案)?

我真的对这个感到困惑,我真的希望有人可以帮助我.

/ M炼

recursion replace wolfram-mathematica

7
推荐指数
2
解决办法
2780
查看次数

无法解释在scala shell中执行的示例的行为

LS

我只是在Odersky等人的"Scala编程"中学习Scala.

在关于演员的章节中,我遇到了无法解释的行为.更具体地说,当尝试向'self'发送消息时(另请参见示例)

进入Scala shell:

scala> import scala.actors.Actor._  
import scala.actors.Actor._
scala > self ! "Hello"

scala > self.receive { case x => x }
Run Code Online (Sandbox Code Playgroud)

但最后一行没有"回归"预期答案:

resX:Any = hello
Run Code Online (Sandbox Code Playgroud)

需要执行Ctrl-C以使shell返回接受我的输入并返回以下消息:

Execution interrupted by signal.

scala> self.receive {case x => x}
// She's gone rogue, captain! Have to take her out!
// Calling Thread.stop on runaway Thread[Thread-54,5,main] with offending code:
// scala> self.receive {case x => x}
Run Code Online (Sandbox Code Playgroud)

但以下实际上有效:

self ! "Hello" ; self.receive { case x => x }
Run Code Online (Sandbox Code Playgroud)

我的问题是: …

debugging shell scala actor

4
推荐指数
1
解决办法
138
查看次数

如何将脚本加载到Python解释器会话中,并让Python启动交互模式?

我想要其中之一:

  1. 使用类似这样的脚本启动 python python my_routines.py,让 python 在代码my_routines.py已加载/运行时进入交互状态。

  2. 以交互模式启动 python 并以某种方便(简短易记)的方式加载my_routines.py

当然,我的想法是我想预加载一些东西,然后在交互模式下使用它。

涉及加载模块 ( python -m ....) 的建议不必适用;-)

期待您的想法!

吐万

python

1
推荐指数
1
解决办法
1415
查看次数