再帰処理の深さに合わせた出力 ― 2008年07月26日 05時25分24秒
そのような場合に単純に printf などで、出力するとどの階層の入力だか出力だか解らなくなるのが世の常だ。再帰の深さも printf で出力してもいいが、やはり再帰らしく一段深くなる毎に print 分に一つずつ空白を足していくのが、視覚的にも見やすい。
幾つかのやり方があるだろうが、printf の出力の深さを用いた書式が一番いいようだ。printf の width と depth を使う。
以下の例では再帰関数は大したことをしていない。しかし、再帰の度に出力の空白文字は増えていく。この形なら、一文で済む。デバッグの為のコードが複数行にわたると色々と不便だ。
#include "stdio.h"
void recursive(int n)
{
static int depth = 0;
if(n <= 0)
return;
printf("%*.0s: %s\n", depth++, " ", "recursive");
printf("%d\n", n);
recursive(n - 1);
printf("%*.0s: %s\n", --depth, " ", "recursive");
}
int main()
{
recursive(3);
}
出力はこうなる。
# ./a.out
: recursive
3
: recursive
2
: recursive
1
: recursive
: recursive
: recursive
最近のコメント