hhh*_*hhh 4 functional-programming r
在lambda演算,Y -combinator返回自己这样Y上=一Y上,specifially 这里.假设一些琐碎的功能,如Y(X)= 2*X + 1(假设为简单起见,教会号),我想这样做,Y Y,而我需要某种突破了功能全的.我想做这样的事情
如何使用功能性思维方式在R中做到这一点?内置有什么东西吗?
我真的不明白lambda演算的符号,所以不能确定Y-combinator是什么,但是我想知道R函数Recall() (这里的帮助页面)是否会帮助你构建你所追求的东西.以下是计算阶乘的示例:
# Calculate 4!
(function(n) {if (n<=1) 1 else n*Recall(n-1)})(4)
Run Code Online (Sandbox Code Playgroud)
在这里,它适用于您描述的示例:
(function(x, n) {if (n<=1) x else Recall(2*x+1, n-1)})(x=1, n=1)
# [1] 1
(function(x, n) {if (n<=1) x else Recall(2*x+1, n-1)})(x=1, n=2)
# [1] 3
(function(x, n) {if (n<=1) x else Recall(2*x+1, n-1)})(x=1, n=3)
# [1] 7
Run Code Online (Sandbox Code Playgroud)