C言語なら俺に聞け! Part 88
■ このスレッドは過去ログ倉庫に格納されています
0147デフォルトの名無しさん
NGNG>>144
末尾再帰でぐぐりなさい
具体的には、関数 f の一番初めにラベル START を作って、
f(a, f(a, b-1, c, 0), c-1, 0)
の呼び出しなら
b = f(a, b-1, c, 0);
c--;
d = 0;
goto START;
に変換
こうすれば呼び出しネスト数が稼げる
……稼げてないような気もしないでもない
これ以外の方法だと、スタックをヒープか2次記憶上に作る方法
■ このスレッドは過去ログ倉庫に格納されています