我想用 rep 语句获得阶乘函数。
我试试!!但是失败了!!
fact <- function(n){
for (i in 0:n){
while(i<n){
rep{n*fact(n-1) if(i ==n) break}
}
}
谢谢您的回答。:)
假设您的意思是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]