如何在R中编写递归函数?

如何在R中编写递归函数?,r,recursion,combinations,R,Recursion,Combinations,如何编写递归函数以获得r中的组合(n,r)=组合(n-1,r-1)+组合(n-1,r)? 我尝试了以下代码,但只收到一条错误消息: nCr=function(n, r) { if (r == 0) { if (r == n) { return (1) } } else { return (nCr(n-1, r-1) + nCr(n-1, r)) } } 谢谢 相关问题: 出现性能问题的部分原因是多次使用相同的输入调用函数。通过缓存结果,您可以使nCr更快‐这种技术对于许多递归函数

如何编写递归函数以获得r中的组合(n,r)=组合(n-1,r-1)+组合(n-1,r)? 我尝试了以下代码,但只收到一条错误消息:

nCr=function(n, r) {
if (r == 0)
{
if (r == n) {

return (1)
} } else {
return (nCr(n-1, r-1) + nCr(n-1, r)) 
}
}
谢谢

相关问题:

出现性能问题的部分原因是多次使用相同的输入调用函数。通过缓存结果,您可以使
nCr
更快‐这种技术对于许多递归函数都很有用,不过请注意,内置函数仍然要快得多

library(memoise)
nCr2 <- memoise(nCr)
system.time(for(i in 1:10) nCr2(20, 6))
##    user  system elapsed 
##    0.88    0.00    0.91
库(备忘录)
nCr2相关问题:

出现性能问题的部分原因是多次使用相同的输入调用函数。通过缓存结果,您可以使
nCr
更快&dash;这种技术对于许多递归函数都很有用,不过请注意,内置函数仍然要快得多

library(memoise)
nCr2 <- memoise(nCr)
system.time(for(i in 1:10) nCr2(20, 6))
##    user  system elapsed 
##    0.88    0.00    0.91
库(备忘录)

nCr2您收到哪种类型的错误消息?似乎你试图使用你在定义中定义的函数…@Llopis好吧,这是递归函数的定义!您会收到哪种类型的错误消息?似乎你试图使用你在定义中定义的函数…@Llopis好吧,这是递归函数的定义!
library(memoise)
nCr2 <- memoise(nCr)
system.time(for(i in 1:10) nCr2(20, 6))
##    user  system elapsed 
##    0.88    0.00    0.91