2017-05-30 68 views
0

我想用rep語句來獲得階乘函數。如何在r中使用rep語句獲得階乘?

我試試!但失敗!

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

謝謝你的回答。 :)

+1

不要把代碼的圖像 - 把它的實際問題。如果他們想要幫助,沒有人會想要手動轉錄您的圖片。 –

+1

哦......好的。我寫了代碼。 – resilience

+0

'rep'用於重複向量的值,你可能是指'replicate'? – snaut

回答

0

假設你的意思replicate,不rep這將是一個解決方案:

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

,當然也只有用這個作爲一個練習,因爲它比在factorial功能的構建方法要慢。

如果你到函數式編程,你可以使用下面的基於λ-解決方案:

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]