Seems like a complex way to write a normal looped version. Apart from factorial_loop_manual() being one in design, its name even says as much.