In the context of programming, it seems more natural to distinguish recursion from iteration than from induction, as iteration is the algorithmic realization of iteration.
In the context of mathematical proof, recursion becomes something like the method of infinite descent (e.g. the classic proof of the irrationality of $\sqrt{2}$), and is quite natural for proving something like the Euclidean algorithm for the greatest common divisor.
In either context, students struggle with the notion that requires consideration of a potentially infinite process. The principle of induction asserts something psychologically difficult, that showing that case $i$ implies case $i+1$ shows something for all $n$, no matter how big. The basis of recursion is that some sort of backwards iteration cannot continue infinitely downwards. Students are accustomed to considering a single step, and nothing more.
Whether it makes more sense to emphasize descent/recursion or induction/iteration surely depends on the educational context and goals.
The recursive approach to understanding Euler's method may be important conceptually for understanding the mathematics of unique factorization in a principal ideal domain. My experience in basic programming classes is that students initially have a lot of difficulty programming it recursively. Their naive approach is the brute force iterative check (to find the gcd of $a < b$, start dividing both by $a$, then $a-1$, etc.). The iterative approach is more accessible, and for many students it probably needs to be tried first, before the recursive approach can be understood. It's important for students to digest that such apparently different approaches resolve the same problem.
In a programming context, recursion requires understanding that a function (or some similar construct) can call itself and this is difficult for many students who have never (well) understood the idea of functions in any context. An iterative procedure is by its nature step-by-step, and this is how most students have been taught. More fundamentally, it requires (in practice) no operational functional concept, just repetition of a set of instructions with a change of a parameter. Also, in practice recursion can involve dealing with issues of memory use (the stack) that require more sophistication (from a programming point of view).
Finally, I wonder if in mathematically oriented programming contexts recursion is sometimes over emphasized (probably because of its aesthetic appeal). From a mathematical point of view the issues of computational efficiency and complexity are important, both pedagogically and practically, and often (always?) iterative implementations can both be made faster in execution and more parsimonious with memory than recursive implementations.