Noëlle the 8-Bit🏳️🌈🎄 is a user on elekk.xyz. 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...) https://octodon.social/media/1wicQXUJE9DFWHtu_rM
@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
Noëlle the 8-Bit🏳️🌈🎄
@noelle
@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)
@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.
@schlink Because it's not stopping when you hit 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!
@schlink As for having return statements early in methods - have return statements wherever it makes sense to have them. Not having them early in functions means you're giving up on a lot of input checking. There's no real value in reserving return statements until the end of a function; it doesn't /actually/ improve readability and it's just arbitrary.