例えばループで書くと

foo() {
 cond = true
 while (cond) {
  ・・・
   ・・・
    if (...) {
     cond = false
    }
   ・・・
  ・・・
 }
}

みたいな構造で、condのようなスコープの広い変数が
必要になるのが、再帰で処理するように書き直せば、

foo() {
 ・・・
  ・・・
   if (!...) {
    foo()
   }
  ・・・
 ・・・
}

で済む、かもしれない、ってこと。