使用遞迴方式將整數轉換為對應字串時,常見的錯誤在於數字位元的提取邏輯。例如輸入 1234 卻輸出 3334,通常是因為在迴圈中計算各位數字時,模運算與除法的順序或變數更新有誤。
原始程式碼中,int_to_string 函數的迴圈使用 m = 10 並不斷乘 10,卻未正確配合 n 的變化來取出每一位數字,導致高位數字被重複或錯誤計算。
較正確的做法是:
int i = 1, j = w - 1, m = 10;
c[w] = '\0';
for (; i <= w; i++) {
c[j--] = (char)(n % m / (m / 10) + 48);
m = m * 10;
}
這樣即可確保輸入 1234 時正確輸出 "1234",而不會出現重複數字的情況。