摘要: 递归是指定义在自身上的函数,换句话说,函数的定义里调用自己。在函数式编程里,通常使用递归表示命令式编程里的循环,许多人认为递归比循环更容易理解算法。 要在F#里使用递归,在函数定义的let关键字后加rec关键字就可以在函数中使用函数名。下面给出一个示例 #light let rec fib x = match x with | 1 -> 1 | 2 -> 1 | x -> fib (x - 1) + fib (x - 2) printfn "(fib 2) = %i" (fib 2) printfn "(fib 6) = %i" (fi 阅读全文
posted @ 2011-11-22 17:32 银河系漫游指南 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 在一个程序里,你可以在有效的范围里使用一个标识符。范围是一个相当简单的概念,重要的是要有很好的理解。如果尝试在标识符范围外使用它,你会得到一个编译错误。所有的标识符,不论是值(Values)或函数(Functions),其范围从其定义,直到其出现部分(空格缩进部分)的结束。在顶层的标识符(即标识符的定义没有被函数或值包含),其范围从它的定义直到源代码的结束有效。一旦一个顶层标识符被分配一个值(value)(或功能(function)),这个值就不能更改或重新定义。 在函数中定义的标识符与顶层标识符稍有不同,它们可以使用let关键字重新定义。这意味着,在F#里不必保留标识符用于保留中间值。... 阅读全文
posted @ 2011-11-22 16:39 银河系漫游指南 阅读(430) 评论(0) 推荐(0) 编辑