λ(lamda)演算如何描述递归函数都是Lamda演算是研究函数的工具,可是我弄不明白如何用lamda演算表示递归函数呢?例如F(a,n)=n==1?a*2:F(F(a,n-1),1)

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/24 01:17:27
λ(lamda)演算如何描述递归函数都是Lamda演算是研究函数的工具,可是我弄不明白如何用lamda演算表示递归函数呢?例如F(a,n)=n==1?a*2:F(F(a,n-1),1)
xRQkP+I$˖>C>M} Emc+e:ZMK+sNdm4W<ro77aOȽ;;|&3OQmb8{u7BӤs'~pZz@ؑ:2u*qc 6J Jd7HmI'Eph-QpFP%MLiJdI%ELn>_ogu,w|ǧ葎N`r3a݅;#tY0IoJ\W:1_cF)7$ 7`Fz˗ia}{1g&~ { iW 斊xv 6^ے10mנ)m;^Zd('h"cx1ζ}XzK!E.`7$WϕU+eS{@9?s<R~t}z &<~DQD bl]"^ W^ny[

λ(lamda)演算如何描述递归函数都是Lamda演算是研究函数的工具,可是我弄不明白如何用lamda演算表示递归函数呢?例如F(a,n)=n==1?a*2:F(F(a,n-1),1)
λ(lamda)演算如何描述递归函数
都是Lamda演算是研究函数的工具,可是我弄不明白如何用lamda演算表示递归函数呢?
例如F(a,n)=n==1?a*2:F(F(a,n-1),1)

λ(lamda)演算如何描述递归函数都是Lamda演算是研究函数的工具,可是我弄不明白如何用lamda演算表示递归函数呢?例如F(a,n)=n==1?a*2:F(F(a,n-1),1)
自己照着这个例子改改就可以了.
递归是一种以函数自身迭代自身变元的算法,一般是通过函数自身来定义函数的方式实现.表面看来 lambda 演算不允许递归,其实这是一种对递归的误解.考虑阶乘函数 f(n) 一般这样递归地定义:
f(n) = 1,若 n = 0; n•f(n-1),若 n>0.
λ语言:
FACT = λ n.n (λ u.MULT n (FACT (PRED n))) 1
用 Y-组合子 在 λ语言 中合法地定义:
FACT = Y (λ g.λ n.n (λ u.MULT n (g (PRED n))) 1)
Y = λ f.((λ x.f (x x)) (λ x.f (x x)))