在Ruby中如何计算数字的阶乘?

在Ruby中如何计算数字的阶乘?,ruby,if-statement,for-loop,syntax,factorial,Ruby,If Statement,For Loop,Syntax,Factorial,好的,我问了一个关于语法错误的问题。我排除了错误,但程序没有按预期执行。我的数学错了,没有找到尾随的零的数目。这是我的密码: num = " " a = 0 sumOfFact = 1 def factorial num = gets.to_i a = num (1..num).each do |a| if a != 1 sumOfFact *= a a -= 1 else

好的,我问了一个关于语法错误的问题。我排除了错误,但程序没有按预期执行。我的数学错了,没有找到尾随的零的数目。这是我的密码:

num = " "
a = 0
sumOfFact = 1

def factorial
    num = gets.to_i
    a = num
    (1..num).each do |a|
        if a != 1
            sumOfFact *= a
            a -= 1
        else
            break
        end
    end
end

for c in 1..sumOfFact
    if sumOfFact / c == 10
            zeros += 1
    end
end

factorial()
puts sumOfFact
puts zeros


假设
n
是一个非负整数,您可以定义一个方法来计算阶乘:

def factorial(n)
  tot = 1
  (1..n).each do |n|
    tot *= x
  end

  tot
end
其用法示例:

puts factorial(0) # 1 
puts factorial(1) # 1
puts factorial(2) # 2 
puts factorial(3) # 6
puts factorial(4) # 24
puts factorial(5) # 120 
如果不想读取用户输入,请按如下方式调用:

puts 'Type the non-negative integer:'
n = gets.to_i
puts factorial(n)

假设
n
是一个非负整数,您可以定义一个方法来计算阶乘:

def factorial(n)
  tot = 1
  (1..n).each do |n|
    tot *= x
  end

  tot
end
其用法示例:

puts factorial(0) # 1 
puts factorial(1) # 1
puts factorial(2) # 2 
puts factorial(3) # 6
puts factorial(4) # 24
puts factorial(5) # 120 
如果不想读取用户输入,请按如下方式调用:

puts 'Type the non-negative integer:'
n = gets.to_i
puts factorial(n)

假设
n
是一个非负整数,您可以定义一个方法来计算阶乘:

def factorial(n)
  tot = 1
  (1..n).each do |n|
    tot *= x
  end

  tot
end
其用法示例:

puts factorial(0) # 1 
puts factorial(1) # 1
puts factorial(2) # 2 
puts factorial(3) # 6
puts factorial(4) # 24
puts factorial(5) # 120 
如果不想读取用户输入,请按如下方式调用:

puts 'Type the non-negative integer:'
n = gets.to_i
puts factorial(n)

假设
n
是一个非负整数,您可以定义一个方法来计算阶乘:

def factorial(n)
  tot = 1
  (1..n).each do |n|
    tot *= x
  end

  tot
end
其用法示例:

puts factorial(0) # 1 
puts factorial(1) # 1
puts factorial(2) # 2 
puts factorial(3) # 6
puts factorial(4) # 24
puts factorial(5) # 120 
如果不想读取用户输入,请按如下方式调用:

puts 'Type the non-negative integer:'
n = gets.to_i
puts factorial(n)

首先,你应该做你方法之外的事情。您的方法应该接受参数。第二,你为什么需要这个条件

你需要从1到n的乘法得到阶乘。您应该从以下内容开始:

def factorial(n)
  total = 1
  (1..n).each do |n|
    total *= n   
  end
  total
end

puts factorial(gets.to_i)
接下来是factorial和inject,以防您想学习新语法:-)

正如@pjs在下面评论的那样,这里有一个做阶乘的漂亮方法

def factorial(n)
  n == 0? 1 : (1..n).inject(:*)
end
最后一项改进是:

def factorial(n)
  (1..n).inject(1, :*)
end

首先,你应该做你方法之外的事情。您的方法应该接受参数。第二,你为什么需要这个条件

你需要从1到n的乘法得到阶乘。您应该从以下内容开始:

def factorial(n)
  total = 1
  (1..n).each do |n|
    total *= n   
  end
  total
end

puts factorial(gets.to_i)
接下来是factorial和inject,以防您想学习新语法:-)

正如@pjs在下面评论的那样,这里有一个做阶乘的漂亮方法

def factorial(n)
  n == 0? 1 : (1..n).inject(:*)
end
最后一项改进是:

def factorial(n)
  (1..n).inject(1, :*)
end

首先,你应该做你方法之外的事情。您的方法应该接受参数。第二,你为什么需要这个条件

你需要从1到n的乘法得到阶乘。您应该从以下内容开始:

def factorial(n)
  total = 1
  (1..n).each do |n|
    total *= n   
  end
  total
end

puts factorial(gets.to_i)
接下来是factorial和inject,以防您想学习新语法:-)

正如@pjs在下面评论的那样,这里有一个做阶乘的漂亮方法

def factorial(n)
  n == 0? 1 : (1..n).inject(:*)
end
最后一项改进是:

def factorial(n)
  (1..n).inject(1, :*)
end

首先,你应该做你方法之外的事情。您的方法应该接受参数。第二,你为什么需要这个条件

你需要从1到n的乘法得到阶乘。您应该从以下内容开始:

def factorial(n)
  total = 1
  (1..n).each do |n|
    total *= n   
  end
  total
end

puts factorial(gets.to_i)
接下来是factorial和inject,以防您想学习新语法:-)

正如@pjs在下面评论的那样,这里有一个做阶乘的漂亮方法

def factorial(n)
  n == 0? 1 : (1..n).inject(:*)
end
最后一项改进是:

def factorial(n)
  (1..n).inject(1, :*)
end
或者你可以简单地写下:

 (1..num).inject(:*) || 1
或者你可以简单地写下:

 (1..num).inject(:*) || 1
或者你可以简单地写下:

 (1..num).inject(:*) || 1
或者你可以简单地写下:

 (1..num).inject(:*) || 1

也试试这个。希望这能在某种程度上帮助任何有同样问题的人

查找任意数的阶乘的方法:

def factorial(number)
    for i in 1...number do
        number *= i
    end
    number
end

puts factorial(5)

也试试这个。希望这能在某种程度上帮助任何有同样问题的人

查找任意数的阶乘的方法:

def factorial(number)
    for i in 1...number do
        number *= i
    end
    number
end

puts factorial(5)

也试试这个。希望这能在某种程度上帮助任何有同样问题的人

查找任意数的阶乘的方法:

def factorial(number)
    for i in 1...number do
        number *= i
    end
    number
end

puts factorial(5)

也试试这个。希望这能在某种程度上帮助任何有同样问题的人

查找任意数的阶乘的方法:

def factorial(number)
    for i in 1...number do
        number *= i
    end
    number
end

puts factorial(5)


我看到一些变量,一个方法定义,一个for循环,一个方法调用和一些put。我有点困惑:所有这些代码的上下文是什么?它应该如何相互作用?到目前为止,你得到了什么结果?是的。堆栈溢出中没有“延续”这样的东西。请正确记录您的问题,因为它需要作为一个独立的项目来理解。我看到一些变量、方法定义、for循环、方法调用和一些put。我有点困惑:所有这些代码的上下文是什么?它应该如何相互作用?到目前为止,你得到了什么结果?是的。堆栈溢出中没有“延续”这样的东西。请正确记录您的问题,因为它需要作为一个独立的项目来理解。我看到一些变量、方法定义、for循环、方法调用和一些put。我有点困惑:所有这些代码的上下文是什么?它应该如何相互作用?到目前为止,你得到了什么结果?是的。堆栈溢出中没有“延续”这样的东西。请正确记录您的问题,因为它需要作为一个独立的项目来理解。我看到一些变量、方法定义、for循环、方法调用和一些put。我有点困惑:所有这些代码的上下文是什么?它应该如何相互作用?到目前为止,你得到了什么结果?是的。堆栈溢出中没有“延续”这样的东西。请正确记录您的问题,因为它需要作为一个独立的项目来理解。OP不要对Ruby有最低限度的理解,您正在给他
#inject
。。。洛尔兹:)注射是什么意思?如果我不能理解它,我就不想使用它。@user3251611请不要使用
#inject
。目前:)即使是清洁剂也是
n.zero?1:(1..n).inject(:*)
,只要您使用
inject
…btw@pjs,漂亮的解决方案!OP对Ruby的了解不多,你给了他
#inject
。。。洛尔兹:)注射是什么意思?如果我不能理解它,我就不想使用它。@user3251611请不要使用
#inject
。目前:)即使是清洁剂也是
n.zero?1:(1..n).inject(:*)
,只要您使用
inject
…btw@pjs,漂亮的解决方案!OP对Ruby的了解不多,你给了他
#inject
。。。洛尔兹:)注射是什么意思?我不想用它,如果我