在mathematica中,如何在do循环中执行多个表达式?

时间:2017-12-11 01:39:01

标签: wolfram-mathematica

我想实现这个功能: 做[ EXPR(1), EXPR(2)... EXPR(N), {I,1,J}]

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

2 个答案:

答案 0 :(得分:2)

尝试用分号而不是逗号分隔。像:

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

答案 1 :(得分:1)

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的人:是的我知道这不是编写阶乘函数的好方法,并且有一个用于计算阶乘的内置函数。但这应该有帮助似乎是一个完全新手的人。