F#入门-第二章 F#基础-第五节 let语句-函数定义
2010-08-16 15:02
344 查看
let语句不仅可以用来将值绑定给变量,也可以用来进行函数定义。
函数定义
在上面这个例子中,将3或5等数值作为参数传递给函数f并调用该函数。
函数定义时,具体的数值还没有决定下来,称作形式参数,上例中为x。
上例中,3获5称作实际参数。
同时,作为函数执行结果返回的值称作函数的返回值。
使用这些用语,可以对函数进行如下定义。
函数定义 let 函数名 形式参数1 形式参数2 ... =函数内容
同时,明确定义参数类型时可以做如下定义.
函数定义 let 函数名 (形式参数1:数据类型) (形式参数2:数据类型) ... =函数内容
定义形式参数时可以采取各种许多不同的形式。
带两个参数的函数的定义
上例为带两个参数的函数add的定义方法。
指定参数数据类型的函数
上例为指定参数类型为float型的函数的定义方法。
同时,使用let rec语句可以定义递归函数。
递归函数是指函数体内调用函数自身的函数。
举例如下
求阶乘函数
上例中的阶乘函数是典型的递归函数。函数体内调用函数自身,虽然理解起来稍微有点困难,但是实际开发中,需要使用到递归函数的地方是非常多的。例如最常用的windows操作系统中的文件目录遍历。当需要显示出某一个文件目录下的所有文件与子目录,使用递归函数是最恰当与最方便的。
不加rec,直接用let定义递归函数是错误的,如下所示。
忘记加rec,引发错误
关于这里出现的if条件分歧语句,在后面几节中进行说明。
关于常州蓝博纺织机械有限公司的产品被常州蓝博节能设备有限公司非法假冒的声明
函数定义
//定义加1函数f let f x = x+1;; //调用函数f。返回4。 f 3;; //调用函数f。返回6。 f 5;; |
函数定义时,具体的数值还没有决定下来,称作形式参数,上例中为x。
上例中,3获5称作实际参数。
同时,作为函数执行结果返回的值称作函数的返回值。
使用这些用语,可以对函数进行如下定义。
函数定义 let 函数名 形式参数1 形式参数2 ... =函数内容
同时,明确定义参数类型时可以做如下定义.
函数定义 let 函数名 (形式参数1:数据类型) (形式参数2:数据类型) ... =函数内容
定义形式参数时可以采取各种许多不同的形式。
带两个参数的函数的定义
//定义执行加法运算的函数add let add x y = x + y;; //函数同上,不同写法 //let add left right = left + right;; //调用add函数,返回3 add 1 2;; //调用add函数,返回7 add 3 4;; //调用add函数,返回0。注意参数为负数的时候必须要加括弧。 add (-10) 10;; |
指定参数数据类型的函数
let f (x:float) = x + 1.;; |
同时,使用let rec语句可以定义递归函数。
递归函数是指函数体内调用函数自身的函数。
举例如下
求阶乘函数
let rec fact n = if n=1 then 1 else n * fact (n-1) in fact 5;; |
不加rec,直接用let定义递归函数是错误的,如下所示。
忘记加rec,引发错误
let fact n = if n=1 then 1 else n * fact (n-1) in fact 5;; error: FS0039: The value or constructor 'fact' is not defined. |
关于常州蓝博纺织机械有限公司的产品被常州蓝博节能设备有限公司非法假冒的声明
相关文章推荐
- F# 入门(四):let语句——值的绑定/函数定义
- F#入门-第二章 F#基础-第四节 let语句-值的绑定
- ASP基础入门第四篇(脚本变量、函数、过程和条件语句)
- Python 学习从入门到放弃(三)--变量与函数基础、基础控制语句
- F#入门-第二章 F#基础-第十六节 函数的类型
- python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数
- sys.all_sql_modules 视图, 它里面存储了函数,表,存储过程,视图等的定义语句
- PHP基础入门教程 PHP循环函数
- Python基础:数据类型、变量定义、输入/输出、逻辑、函数/模块(导入)/类、异常处理
- PHP入门-函数的定义与使用
- PHP循环函数使用介绍之PHP基础入门教程
- Excel VBA入门的基础语句
- 零基础入门学习Python(19)--函数:我的地盘听我的
- C#入门基础(第二章)
- javascript快速入门第二章基础知识(下)
- oracleI基础入门(6)--sql语句-distinct
- python入门学习-函数基础
- oracleI基础入门(6)--sql语句-count
- ios入门攻略 06篇 C语言基础【循环结构之while ,do-while语句】
- ios入门攻略 07篇 C语言基础【循环结构之for语句,打印九九乘法表】