Loading collection data...
Collections are a way for you to organize kata so that you can create your own training routines. Every collection you create is public and automatically sharable with other warriors. After you have added a few kata to a collection you and others can train on the kata contained within the collection.
Get started now by creating a new collection.
Many modern compilers already perform automatic tail-recursion optimisations, and I suspect
rustc
does too.According to
cargo-asm
, the following is your function in assembly. Despite my very shallow knowledge in assembly, I believe it is tail-recursion optimised since there are onlyjump
s and nocall
s.I'm very impressed by this solution, and it's author, but completely unimpressed by the people who voted the solution "best practice". While it is certainly clever, I wouldn't say a recursive solution is exactly "best practice". I was thought in A&D to avoid recursion wherever possible. Typically this sort of thing will crowd the stack with the return adresses and parameters of outer calls. It is very functional in style though. So kudos, once again, for cleverness.