在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
。。。洛尔兹:)注射是什么意思?我不想用它,如果我