我想实现这个功能:做expr(1),expr(2)...expr(n),{i,1,j}
执行expr(k)需要expr(k-1)的结果,不是简单的多层do循环就能实现的。如何通过do循环执行函数?还是通过mathematica中的其他循环?(我还注意到for和while循环只能支持一个expr,就像循环一样)
发布于 2017-12-11 10:01:59
尝试使用分号分隔,而不是逗号分隔。像这样:
y = 0
Do[y += x; Print[y], {x, 1, 5}]发布于 2017-12-11 23:47:31
Do循环,以及命令式编程语言中的许多其他控制流构造,几乎总是数学编程问题的正确答案。
你没有告诉我们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的人:是的,我知道这不是编写阶乘函数的好方法,并且有一个用于计算阶乘的内置函数。但这应该是为了帮助那些看起来完全是新手的人。)
https://stackoverflow.com/questions/47745380
复制相似问题