【问题标题】:In mathematica, how can I execute multiple expressions in do loop?在mathematica中,如何在do循环中执行多个表达式?
【发布时间】:2017-12-11 01:39:00
【问题描述】:

我想实现这个功能: 做[ expr(1), 表达式(2)... 表达式(n), {i,1,j}]

执行expr(k),需要expr(k-1)的结果,所以简单的多层do循环是无法实现的。如何通过do循环执行该功能?还是通过mathematica中的其他循环?(我还注意到for和while循环都只能支持一个expr,就像do循环一样)

【问题讨论】:

标签: wolfram-mathematica


【解决方案1】:

尝试使用分号而不是逗号分隔。喜欢:

y = 0
Do[y += x; Print[y], {x, 1, 5}]

【讨论】:

  • 超级,@PengPeng - 乐于助人!如果它回答了您的问题,请“接受”答案。
【解决方案2】:

Do 循环以及来自命令式编程语言的许多其他控制流构造几乎总是不是 Mathematica 编程问题的正确答案。

你没有告诉我们expr 应该计算什么,所以很难提供一个非常笼统的答案......所以我将使用阶乘作为一个简单的例子来说明如何编写一个函数expr[n] 依赖于 expr[n-1]

fact[0] = 1
fact[n_] := n*fact[n-1]  

在这里,我在两个规则中定义了阶乘函数;第一个确定基本情况,第二个确定0 以外的值的情况。为了避免给函数提供错误数据的情况,我们可能更喜欢这样的公式

fact[0] = 1
fact[n_Integer /; n > 0] := n*fact[n-1]  

在此版本中,函数 fact 将仅对正整数或 0 进行操作。

(注意:对于那些熟悉 Mathematica 的人:是的,我知道这不是编写阶乘函数的好方法,并且有一个用于计算阶乘的内置函数。但这应该会有所帮助一个看起来完全是新手的人。

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 2019-10-12
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2014-05-12
    • 2012-04-29
    相关资源
    最近更新 更多