There is no one answer to wether you are better of with a recursion, loop, multiple function calls, ...
But there are some hints:
recursion depth can be limited by the size of the call stack (depends on the language). A value that pops into mind is a max of 1024.
if the data structure is recursive, for instance a binary tree, recursion is your friend.
put your problem into words: "and then the same for the next item" => iteration; "and then the same for the rest" => recursion.
if you need to store intermediate values, it is easier done with iteration.
if your problem is inherently self-similar, go with recursion.
Final remark: All problems can be solved by both iteration and recursion. It is a good exercise to implement both. Observe, which took you longer, which runs faster, which uses less memory, which is parallelisable? And most importantly: Which was more fun to implement?