Sam Schlinkert is a user on octodon.social. You can follow them or interact with them if you have an account anywhere in the fediverse. If you don't, you can sign up here.

Is the first way the "Ruby way" (how I wrote it) and the second more functional/the Golang way (from a Golang video tutorial)?

(Also, really warming up to my new Vim colorscheme...) octodon.social/media/1wicQXUJE

@schlink Hm. I dunno much about Golang, but in Ruby I think I'd write:

def factorial(num):
if num <= 1:
return 1
end
num * factorial(num - 1)
end

@noelle huh. I was taught not to have `return` statements early in methods (unless error checking), which I first resisted but eventually came around to as it can improve readability if you're consistent about it.

I'm actually not 100% how your method works!! I'd have thought it would always return a 1...

@schlink It should only return 1 if num is less than or equal to 1 (<= 1). return statements in the final position are apparently unRubyic, so I got rid of it, but you could just as easily write

return num * factorial(num - 1)

Sam Schlinkert @schlink

@noelle I at first thought

return n * factorial(n-1)

was the sleekest Ruby solution but I'm getting a "stack level too deep" error when I run it.

· Web · 0 · 1

@noelle oh I see-- you were showing that I could use the `return` keyword. The only reason I used it in the first screenshot is I think Go requires it. I'm all for implicit returns in Ruby!

So `return 1` is basically a loop break out of your method. That's interesting and new to me! Thanks!