Я новичок в C, и я пытаюсь использовать рекурсию для изменения цифр в целых числах (например, 123 становится 321). Мне также нужно распечатать результат, используя функцию void, называемую reverseDigits. Функция успешно меняет число, моя проблема в том, что когда я пытаюсь распечатать результаты, она будет печатать ее несколько раз. Например, вместо того, чтобы печатать только «321», он печатает «321 321 321». Я заметил, что он печатает результат, так как число цифр находится в числе. «12» выходов «21 21», «123» выходы «321 321 321» и т. Д. Я не могу понять, что вызывает это. Мне просто нужно его распечатать один раз. Что вызывает это? 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), чтобы найти частное и остальное за одну операцию. –