两种方法之间的差异发生在第二条if条件下。第一种方法中的if条件是"如果num< = 1"并且第二种方法中的if条件是"如果num = 1"。我在一张纸上逐步绘制了这两种方法,但我不明白为什么factorial2返回1而不是6.在纸面上,我得到6这两种方法。
def factorial1(num)
if num < 0
return "Please use a positive number"
end
if num <= 1
1
else
num * factorial(num-1)
end
end
puts factorial1(3)
#returns 6
def factorial2(num)
if num < 0
return "Please use a positive number"
end
if num = 1
1
else
num * factorial(num-1)
end
end
puts factorial2(3)
#returns 1
答案 0 :(得分:3)
if num = 1
比较者运算符为==
,而不是=
(赋值运算符)。
也不要忘记使用return关键字,让每个分支返回一些东西是很好的约定。
答案 1 :(得分:-1)
def fact(n)
return 1 if n==0
return n * fact(n-1)
end
puts "Enter number"
n=gets.to_i
a=fact(n)
puts a