如何在R中用向量编写递归函数?

如何在R中用向量编写递归函数?,r,recursion,max,R,Recursion,Max,我有一个函数:(1-(x/d)) 哪个d是向量(V)的成员 基于向量的长度,函数如下所示: 例如,向量是V[2,3.5,5,4.1] 因此,功能将是: [(1-(x/2))*(1-(x/3.5))*(1-(x/5))*(1-(x/4.1))] [(1-(x/1.5))*(1-(x/2))] 如果我给它一个类似于[1.5,2]的向量,函数是: [(1-(x/2))*(1-(x/3.5))*(1-(x/5))*(1-(x/4.1))] [(1-(x/1.5))*(1-(x/2))] 这意味着

我有一个函数:(1-(x/d)) 哪个d是向量(V)的成员 基于向量的长度,函数如下所示: 例如,向量是V[2,3.5,5,4.1] 因此,功能将是:

[(1-(x/2))*(1-(x/3.5))*(1-(x/5))*(1-(x/4.1))]
[(1-(x/1.5))*(1-(x/2))]
如果我给它一个类似于[1.5,2]的向量,函数是:

[(1-(x/2))*(1-(x/3.5))*(1-(x/5))*(1-(x/4.1))]
[(1-(x/1.5))*(1-(x/2))]
这意味着函数的形状取决于向量及其元素的长度。
我想要一个代码来创建这个函数,然后通过在R中优化来找到它的最大值。

这里有一个方法。函数
f
返回可应用于向量
x
的函数

f <- function(d) {
  force(d)
  function(x) prod(1 - x/d)
}

d <- c(1.5, 2)
g <- f(d)
sapply(1:5, g)
#[1] 0.1666667 0.0000000 0.5000000 1.6666667 3.5000000

f这里的
x
是什么?