You really can not damage memory by executing any code including recursion on any modern machine. And by "modern" I mean anything that is build in last 20 or more years. Unless, of course, your motherboard is defective (but that is different story). Maybe on some very old machines this was possible, but not anymore.
Recursion from perspective of CPU is just calling a lot of functions and returning from them. If that would burn memory, then any decent AAA+ game would burn everyone's memory :) Because they created by large game engines, which call a lot of functions.
Any recursion can be rewritten using iterative algorithm. Sometimes you'll need to use additional memory for that, but it is always possible. In
simple cases like calculating factorial or Fibonacci numbers it is trivial to change recursion to iteration. But if you are using recursion that requires to store a lot of state like walking complex graph structure, or some weird sorting then often you'll need to allocate some memory.
Advantage of using recursion is that current programming languages offer to do that will less code, your code looks simpler if you use recursion and you don't need to write much of it. If you need to manage additional memory for your state using iterative algorithm, that's a bit more code (but usually not a lot).
There is one advantage for iterative algorithm that recursive one doesn't have - you can control how much memory you actually use, and can return failure or display error to user if you start using too much of memory. For native code that uses recursion, once you run out of stack space, your code will crash - operating system will throw exception/signal you could catch it, but it is not safe to handle it. Here's a post from
Raymond Chen on this topic. Managed languages (Java, C#, etc..) can handle out of stack space exceptions more safely.