我一直在尝试编写函数的递归版本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)算法。谁能告诉我一个更好的方法?我也认为静态变量不是必需的,但我不太确定如何避免它。我应该将函数分成两部分以避免静态变量吗?