代码之家  ›  专栏  ›  技术社区  ›  Luke101

F#递归终止

  •  2
  • Luke101  · 技术社区  · 14 年前

    我读了很多关于函数式编程和f。我有一段我无法理解的代码。我对递归程序很熟悉,但这个特殊的代码让我很烦

    open System
    
    let rec fact x =
        if x < 1 then 1
        else x * fact (x - 1)
    
    fact 6
    

    在这段代码中,代码中没有终止重复的位置。这个程序怎么知道什么时候停止。如果我用c语言编程,我会告诉程序当索引或迭代器高于6时停止递归。

    1 回复  |  直到 14 年前
        1
  •  10
  •   linuxuser27    14 年前

    x 1 因为表达式的结果是

    if x < 1 then 1
    

    在C#中,函数如下所示:

    public int fact(int x)
    {
       if (x < 1)
          return 1;
       else
          return x * fact(x - 1);
    }