0

我想用 rep 语句获得阶乘函数。

我试试!!但是失败了!!

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

谢谢您的回答。:)

4

1 回答 1

0

假设您的意思是replicaterep这不是一个解决方案:

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]
于 2017-05-30T10:58:38.460 回答