Ruby:阶乘递归
两种方法之间的差异出现在第二个if条件下。第一个方法中的if条件是“if num” 比较器运算符是Ruby:阶乘递归,ruby,Ruby,两种方法之间的差异出现在第二个if条件下。第一个方法中的if条件是“if num” 比较器运算符是=,而不是=(赋值运算符) 另外,不要忘记使用return关键字,让每个分支都返回一些东西是一个很好的惯例。通常避免在Ruby中使用return关键字,除非出于早期退出/流控制的目的需要。使用return与Ruby不一样,但您肯定应该确保方法中的ast操作/值是您希望返回的操作/值,您需要将factorial(num-1)更改为factorial中的factorial(num-1)和factoria
=
,而不是=
(赋值运算符)
另外,不要忘记使用return关键字,让每个分支都返回一些东西是一个很好的惯例。通常避免在Ruby中使用
return
关键字,除非出于早期退出/流控制的目的需要。使用return
与Ruby不一样,但您肯定应该确保方法中的ast操作/值是您希望返回的操作/值,您需要将factorial(num-1)
更改为factorial
中的factorial(num-1)
和factorial2
中的您仍然有factorial2(0)
的问题。
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
if num = 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