C言語の関数は再帰的に使用できます。すなわち、Cの関数は自分自身を直接(あるいは間接的に)呼び出すことが可能です。関数が自らを再帰呼出しすると、各呼出し毎に、処理中の値を保持したまま、新たな局所変数が生成されます。
再帰呼出しはツリー構造のような再帰的に定義されるデータ構造を扱う際に便利です。また、階乗計算やフィボナッチ数列のように再帰的な構造のアルゴリズムを記述するのにも適しています。
再帰呼び出しが正常に行われるには、その関数がリエントラントである必要があります。つまり、外部変数やstaticな局所変数の使用が不可です。また、その関数からリエントラントではない関数を呼び出してもいけません。
再帰呼び出しされる関数には、処理を中断・終了する条件が必ず必要です。その部分に誤りがあると無限に関数を呼び出すことになりますので注意しましょう。