R:函数递归

Ani*_*ita 0 recursion r function

我有以下代码:

N <- 3
K <- 100
S0 <- 100
u <- 1.007
d <- 1/u
r <- 0.002
a <- 1/6

ptil <- (1+r-d)/(u-d)
qtil <- 1-ptil

VN <- function(n,s,y){
   V <- 1/(1+r)*(ptil*VN(n+1,u*s,a*u*s+y)+qtil*VN(n+1,s*d, a*d*s+y))
   if (n < N){
      return(V)
   }
   if (n == N){
      return(max(c(0,y-K)))
   }  
}
Run Code Online (Sandbox Code Playgroud)

当我计算时VN(0,S0, aS0),我得到以下错误:Error: evaluation nested too deeply: infinite recursion / options(expressions=)?.我的代码出了什么问题?

Spa*_*man 5

VN在第一行立即再次呼叫VN.哪个会再次呼叫VN.然后再次.

我不知道这段代码应该做什么,但递归算法需要在调用自己之前先检查它们的触底情况.我怀疑你只需将函数的第一行移动到第一if个子句中.