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