Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 循环阶乘_R_Loops_For Loop_Factorial - Fatal编程技术网

R 循环阶乘

R 循环阶乘,r,loops,for-loop,factorial,R,Loops,For Loop,Factorial,我创建了以下函数来计算给定数字的阶乘: factorial <- function(x){ y <- 1 for(i in 1:x){ y <-y*((1:x)[i]) print(y) } } factorial(6) in console: [1] 1 [1] 2 [1] 6 [1] 24 [1] 120 [1] 720 factorial是否将print语句移出循环 for(i in 1:x){ y <-y*((1:x)[i]) } print(

我创建了以下函数来计算给定数字的阶乘:

factorial <- function(x){
y <- 1
for(i in 1:x){
y <-y*((1:x)[i])
print(y)
}

}


factorial(6)

in console:

[1] 1
[1] 2
[1] 6
[1] 24
[1] 120
[1] 720

factorial是否将print语句移出循环

for(i in 1:x){
    y <-y*((1:x)[i])
}
print(y)
for(1:x中的i){

y是否将打印语句移到循环之外

for(i in 1:x){
    y <-y*((1:x)[i])
}
print(y)
for(1:x中的i){
y只需将
print()
放在循环外即可

factorial <- function(x){
y <- 1
for(i in 1:x){
y <-y*((1:x)[i])
}
print(y)
}
factorial只需将
print()

factorial <- function(x){
y <- 1
for(i in 1:x){
y <-y*((1:x)[i])
}
print(y)
}

factorial
print
打印到屏幕上。函数将返回上次计算表达式的结果(或显式的
返回值
值)。是否既要返回值,也要打印值

话虽如此

R
已经有了一个函数
factorial
,它调用
gamma(x+1)
,使用的事实是

所以


您编写的函数在与大数相乘时会出现整数溢出问题,并且由于在循环中反复重新分配到
y
(不需要时递归)

print
打印到屏幕上,因此效率极低。函数将返回上一次计算表达式的结果(或显式返回值)。是否既要返回值,也要打印值

话虽如此

R
已经有了一个函数
factorial
,它调用
gamma(x+1)
,使用的事实是

所以

您编写的函数在与大数相乘时会出现整数溢出问题,并且由于您在循环中反复重新分配到
y
(在不需要时递归)

#从用户处获取输入,因此效率极低
n
#从用户处获取输入

n您可以在代码末尾使用返回函数来定义阶乘函数:

factorial<-function(x){
        y<-1
        for(i in 1:x) {
        y<-y*((1:x)[i])
                      }
        return(y) 
            }

factorial您可以通过在代码末尾使用返回函数来定义阶乘函数:

factorial<-function(x){
        y<-1
        for(i in 1:x) {
        y<-y*((1:x)[i])
                      }
        return(y) 
            }

factorial为什么你不只是做
factorial(1:6)
?或者只做
factorial(6)
为什么你不只是做
factorial(1:6)
?或者只做
factorial(6)
对我们来说是最好的事情。:)请注意,当使用R时,这是一种可怕的计算阶乘的方法。事实就是这样。标准库函数总是更好。您确实意识到,如果您只是调用
阶乘(6),则不必使用
print(y)
,因为这将自动打印结果。我们中最好的人也会这样做。:)注意,使用R时,这是一种可怕的计算阶乘的方法。确实如此。标准库函数总是更好。您确实意识到,如果您只是调用
阶乘(6),则不必使用
print(y)
,因为这将自动打印结果。这似乎是一种更简单的方法,如果你能将它嵌入到函数中,它将以相同的语言完美地工作。这似乎是一种更简单的方法,如果你能将它嵌入到函数中,它将以相同的语言完美地工作。是不是?