関数の再帰バージョンを書き込もうとしていitoa
ます。コードを以下に示します。
void itoa(int n, char s[])
{
static int i = 0;
if(n / 10 != 0)
itoa(n/10, s);
else if(n < 0)
i = 1; /* s[0] is allready taken by - sign */
else
i = 0; /* reset i to 0 */
if(n < 0) {
s[0] = '-';
}
s[i++] = abs(n % 10) + '0';
s[i] = '\0';
}
しかし、コードは理想的ではありません。変数を使用しておりstatic
、おそらく本来の速度で実行されていません。O(n)アルゴリズムを実現しようとしています。誰かが私にもっと良い方法を教えてもらえますか?また、静的変数は必要ないと思いますが、それを回避する方法がよくわかりません。静的変数を回避するために、関数を2つに分割する必要がありますか?