我一直在阅读很多关于函数式编程和f#的文章.我有一段我无法理解的代码片段.我熟悉递归程序,但这个特殊的代码让我烦恼
open System
let rec fact x =
if x < 1 then 1
else x * fact (x - 1)
fact 6
Run Code Online (Sandbox Code Playgroud)
在这段代码中,代码中没有终止重复的位置.该程序如何知道何时停止.如果我在c#中对此进行编程,我会告诉程序在索引或迭代器高于6时停止递归.
lin*_*r27 10
当递归x小于1因为表达式的结果时,递归停止1
if x < 1 then 1
Run Code Online (Sandbox Code Playgroud)
在C#中,函数看起来如下:
public int fact(int x)
{
if (x < 1)
return 1;
else
return x * fact(x - 1);
}
Run Code Online (Sandbox Code Playgroud)
纯函数编程很有意思,因为永远不会有回报,所有程序都会进行评估.你需要问自己'这个表达式评估的是什么?'