如何在r中使用rep语句获得阶乘?

时间:2017-05-30 09:57:45

标签: r factorial rep

我想用rep语句获得factorial函数。

我试试!!但失败!!

   fact <- function(n){
      for (i in 0:n){
        while(i<n){
          rep{n*fact(n-1) if(i ==n) break}
       }
    }

谢谢你的回答。 :)

1 个答案:

答案 0 :(得分:0)

假设您的意思是replicate,而不是rep,这将是一个解决方案:

fact <- function(N){
  n <- N
  f <- 1
  replicate(n, {
    f <<- f*n
    n <<- n-1
    f
  })[N]
}

当然只将它用作练习,因为它比factorial函数中的构建速度慢。

如果您正在进行函数式编程,则可以使用以下基于lambda的解决方案:

N <- 10

factorial_generator <- function(){
  fac <- 1
  n <- 0
  function(){
    n <<- n+1
    fac <<- fac * n
    return(fac)
  }
}

my_factorial <- factorial_generator()

replicate(N, my_factorial())[N]