阶乘从头开始在RStudio中生成多个输出
我知道有一个内置的函数,但我在读一个编码网站的时候,把从零开始做阶乘作为一个想法,这让我很困惑。代码如下:阶乘从头开始在RStudio中生成多个输出,r,R,我知道有一个内置的函数,但我在读一个编码网站的时候,把从零开始做阶乘作为一个想法,这让我很困惑。代码如下: recursion <- function(n) { if(n <= 1) { print(1) } else { print(n * recursion(n-1)) } } 但我有30%的时间: > recursion(5) [1] 120 有人能帮我理解为什么会这样,我能做什么才能只得到一个输出 不确定这是否被允许,但我在尝试实现备
recursion <- function(n) {
if(n <= 1) {
print(1)
} else {
print(n * recursion(n-1))
}
}
但我有30%的时间:
> recursion(5)
[1] 120
有人能帮我理解为什么会这样,我能做什么才能只得到一个输出
不确定这是否被允许,但我在尝试实现备忘录时也遇到了同样的问题
memoization <- function(){
values <- 1
Factorial_mem <- function(x){
if(x < 0){
stop("Factorials can only be computed when x is equal to, or greater
than, zero")
}
if (x == 0 | x == 1){
return(1)
}
if (length(values) < x){
values <<- `length<-`(values, x)
}
if (!is.na(values[x])){
return(values[x])
}
values[x] <<- x * factorial(x-1)
print(values)
}
Factorial_mem
}
大部分时间的输出:
> Factorial_mem(5)
[1] 120
> Factorial_mem(5)
[1] 1 NA NA NA 120
如果我需要提供额外的信息澄清,请让我知道,我可以提供它。我不确定我使用RStudio的事实是否相关
谢谢你你正在为循环调用你的函数
,但是你在第一个例子中使用了递归。那么是循环的还是递归的呢?对不起。。这是递归。已修复。您的打印(x)
应该位于for(i in 1:n)
中。我无法使用复制(1000,递归(5))
复制您的问题。您需要提供更多关于70-30%拆分的上下文。谢谢CPak。我能提供的唯一其他信息是,我正在从一个脚本同时运行for_循环、reduce、递归和memonization函数。我想知道这是否就是输出产生异常的原因?
> Factorial_mem(5)
[1] 1 NA NA NA 120