R:x的函数的递归和

时间:2017-08-25 11:19:30

标签: r

我想根据索引i = 1,... k来编程x的k个函数的总和,并且还取决于点x0(它看起来有点像泰勒公式)。但是,以下代码生成错误消息:

  

错误:评估嵌套太深:无限递归/选项(表达式=)?

     

换行时出错:评估嵌套太深:无限递归/选项(表达式=)?

如果有人可以帮助改进它,我将不胜感激:

{{1}}

1 个答案:

答案 0 :(得分:3)

你需要递归吗?这是你想要做的吗?

cum_f <- function(x, x0, k){
              i <- 1
              p <- x0**2
              while(i <= k){
                   p <- p + (x - x0)**i
                   i = i + 1
              }
              return(p)
         }

 cum_f(10,1,5) 

 # 66430

替代

您可以使用此功能获得相同的结果

cum_f <- function(x, x0, k){
             val <- Reduce("+", c(x0**2, (x-x0)**(1:k)), accumulate=TRUE)
             return(tail(val,1))
         }

甚至更简单(感谢罗兰)

cum_f <- function(x, x0, k){
             val <- x0^2 + sum((x-x0)^(1:k))
             return(val)
         }

cum_f(10,1,5) 
# 66430