我们除了可用Do、While、For等进行循环计算外,我们还可以运用函数进行编程。运用函数编程结构你能得出非常有效的程序。例如Nest[f,x,n]允许你对某一表达式重复运用函数f
给出重复运用函数的方式。
Nest[expr,n] 对表达式expr重复调用函数fn次 对表达式expr重复调用函数fn次,直FixedPoint[y,expr] 到结果不变为止 对表达式expr重复调用函数f,直到产NestWhile[f,expr,test] 生的结果为假时为止 下面对函数f迭代5次:
对纯函数进行迭代,你能得出与运用Do函数得出的结果一样:
Nest函数允许你重复运用某函数。然而,有时你想在结果不再发生变化的情况下就中止对函数的使用,此时立刻使用函数
FixPoint[f,x]。FixPoint函数重复运用某一函数直到结果不再发生变化:
8.3.5 流程控制
函数程序结构的流程控制一般来说比较简单,但是在应用While
或For等循环时就比较复杂了,这是因为他们的流程控制依赖于表达式的值。而且在这样的循环中,流程的控 制并不依赖于循环体中表达式的值。有时你在编制Mathematica程序时,在该程序中,流程控制受某一过程或循环体执行结果的影响。这时,我们可用Ma~ematka提供的流程控制函数来控制流程。这些函数的 工作过程与C语言中的很相似。
常用的流程控制函数。
Break[] Continue[] 退出本层的循环 转入当前循环的下一步 退出函数中的所有过程及循环,并返Return[expr] 回expr值 转入当前过程中的元素Goto[name] Label[name] Throw[value] 返回expr值 当t>20时,Break[]就引起循环体的中断:
当k<3时,Continue[]继续执行循环:
下面给出Return的一个例子:
Return[]允许你退出一函数,并返回一个值。Mathematica可以进行局部返回,这可 允许你退出一列迭代函数。非局部返回在错误处理时是很有用的。下面给出的例子中如函数变量小于0则输出error~
ln[6]不产生error,且出示Catch的结果无效: 当变量小于0时输出error