サイトマップ / C言語講座>出入り口>総目次>目次:再帰>10進数を16進表示
[関数の再帰呼び出し]←このソース→[フィボナッチ数列 ( 再帰版 )]
関数ShowHex( )は10進整数を引数にとり、その16進数を表示します。引数は unsigned short型なので、変換結果が4桁の16進数の範囲に入れば、正常に変換します。関数ShowHex( )は、まず、xを16で割った余りをrに保存します。この操作で、xの値は変化しません。
次いで、xを16で割った結果をxに保存します。この操作で、xの値は1/16になります。xの値が16より小さいと、整数同志の除算では余りは捨てられるので、xは0になります。xが0でなければ、1/16小さい自分を再帰的に呼び出し、上記操作を繰り返します。ここで重要なのは、ソースコードの中でこの行以降はxが0になるまで実行されないということです。xが0になると、再帰的呼び出しが終わり、上の桁から画面に表示しながら戻ります。 */
#include <stdio.h> void ShowHex(unsigned short x); void main(void); void ShowHex(unsigned short x) { int r; r = x % 16; /* 16で割った余りをrに保存 */ x = x / 16; /* x < 16 なら0になる */ if (x > 0) /* x が0でない限り */ ShowHex(x); /* 1/16小さい自分を再帰的に呼び出す */ /* この行以降はxが0になり、再帰から戻る時実行される */ if (r >= 0 && r <= 9) /* rが0から9なら */ printf("%d", r); /* そのまま表示 */ else if (r > 9) /* rが9以上なら */ putchar('A' + r - 10); /* アルファベットに変換して表示(注) */ } |
/* 実行結果はいかがでしたか。二つの英単語(実は16進数)が表示されたはずです。 */
[関数の再帰呼び出し]←このソース→[フィボナッチ数列 ( 再帰版 )]
/* (C) 2000- YFプロ. All Rights Reserved. */ 提供:C言語講座−それ自体コンパイルできる教材を使った講座です−