私はC言語の新人です。再帰を使用して整数の数字を逆転させようとしています(たとえば、123は321になります)。 reverseDigitsというvoid関数を使って結果を出力する必要もあります。関数は正常に数値を反転させる、私の問題は、私が結果を印刷しようとすると、複数回印刷されます。たとえば、「321」だけを印刷する代わりに、「321 321 321」を印刷します。私は数字に数字が入っているので、結果が表示されていることに気づいた。 「12」は「21 21」を出力し、「123」は「321 321 321」を出力する。私はこれが起こる原因を突き止めることはできません。一度印刷するだけでいいです。これが起こる原因は何ですか? main関数のreverseDigits(123)は、その番号が入力された場合の結果を確認するためだけにあり、最終的なプログラムには含まれません。 (それが関連しているかどうかはわかりません)。Cの再帰を使用した数字の逆数
#include <stdio.h>
#include <stdlib.h>
int reverse=0;
void reverseDigits(int number){
int remainder;
if (number!=0){
remainder = number % 10;
reverse = (reverse*10)+remainder;
reverseDigits(number/10);
printf("%i ",reverse);
}
}
int main() {
reverseDigits(123);
return 0;
}
[div() '関数](http://pubs.opengroup.org/onlinepubs/9699919799/functions/div.html)を使用すると、1回の操作で商と剰余を見つけることができます。 –