小编Jae*_*Kim的帖子

防止递归R函数中的无限递归/堆栈溢出错误

创建一个简单的递归函数,如下所示.

power <- function(x, n) {
  if(n >= 1) x * power(x, n-1)
  else 1
}
Run Code Online (Sandbox Code Playgroud)

当n设置为1e4时,它显示错误infinite recursion.正如错误消息所示,我更新了option参数,在这种情况下,stack overflow遇到了错误.

## error to run power 10000 times with defalult option
options()$expressions
#[1] 5000

power(2, 1e3)
#[1] 1.071509e+301

power(2, 1e4)
#Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
#Error during wrapup: evaluation nested too deeply: infinite recursion / options(expressions=)?

## expressions parameter updated and results in stack overflow
options(expressions = 100000)
power(2, 1e4)
#Error: protect(): protection stack …
Run Code Online (Sandbox Code Playgroud)

r

5
推荐指数
1
解决办法
2332
查看次数

标签 统计

r ×1