このスレ、ハード寄りでアルゴリズムに関して質問していいか分らないけど
Cで色んなプログラムを再帰で作り変えていて疑問が湧きました。

再帰関数って、とりあえずmain関数内で一回呼び出して、その引数に見合う
結果を出力しますよね?でも、再帰関数の中で、引数を変化させて関数を呼び出してますけど
途中でその各々の引数に見合う結果、状態になっているのでしょうか?途中でも、必ずその状態になるという
のは保障されるのでしょうか?

それとも、いくら同じ関数が途中で呼び出されようとも、mainで呼び出される再帰関数のみが、引数に見合う
処理をしていて、実は再帰関数によって行われる全ての同じ関数の処理の組み合わせで、ひとつの処理となっているのか
気になりました。