R 递归函数正在返回错误消息
我正在尝试创建一个递归函数,它将执行矩阵乘法R 递归函数正在返回错误消息,r,function,recursion,R,Function,Recursion,我正在尝试创建一个递归函数,它将执行矩阵乘法n次 我的代码如下: R <- function(P, n){ R(P, n-1) %*% P } 举个例子: > P [,1] [,2] [,3] [1,] 0.6 0.1 0.3 [2,] 0.2 0.7 0.1 [3,] 0.3 0.3 0.4 但是,当我调用该函数时,会收到一条错误消息 错误:计算嵌套太深:无限递归/选项(表达式=)? wrapup期间出错:计算嵌套太深:无限递归/选项(表达式
n次
我的代码如下:
R <- function(P, n){
R(P, n-1) %*% P
}
举个例子:
> P
[,1] [,2] [,3]
[1,] 0.6 0.1 0.3
[2,] 0.2 0.7 0.1
[3,] 0.3 0.3 0.4
但是,当我调用该函数时,会收到一条错误消息
错误:计算嵌套太深:无限递归/选项(表达式=)?
wrapup期间出错:计算嵌套太深:无限递归/选项(表达式=)
你能给我解释一下为什么这个函数不起作用,以及应该如何修改代码吗?每个递归函数都应该有一个阈值,递归调用将在该阈值处停止。您定义的函数R
没有此条件,因为触发的错误也提到
计算嵌套太深:无限递归
所以
R OP的数据:P
> P
[,1] [,2] [,3]
[1,] 0.6 0.1 0.3
[2,] 0.2 0.7 0.1
[3,] 0.3 0.3 0.4
R <- function(P, n){
if (n==1) return(P)
R(P, n-1) %*% P
}
r1 <- (P %*% P) %*% P
r2 <- R(P,3)
all(r1==r2)
#[1] TRUE