Код для поиска обратного числа с помощью рекурсивной функции, но без использования в ней статической или глобальной переменной.
Я попробовал следующий код.
Но проблема заключается в том, что коэффициент 10 должен быть многократно умножен, чтобы соответствовать правильному месту цифры.
Предположим, что число равно 2476, тогда я хочу вычислить обратное как:-
6*1000 + 7*100 + 4*10 + 2.
Но следующий код делает
6 + 7*10 + 4*100 + 2*1000 = 2476 (само число)
Как получить эти 10^n правильных без использования глобальной или статической переменной и ни с помощью функции math.h.
Также кто-то дал мне подсказку, что с помощью рекурсивной вспомогательной функции это можно сделать. Я все еще не могу понять.
Что я уже пробовал:
#include<stdio.h> int reverse(int long n){ int x; x = n%10; if(n!= 0){ return (x + reverse(n/10)*10); } else{ return 0; } } int main(void){ int long n, result; printf("Enter a number: "); scanf("%ld", &n); result = reverse(n); printf("\nThe reverse of %ld is %ld\n\n", n, result); }
Philippe Mori
Если вы напечатаете то, что делает ваш код, вы получите:
Reverse(2) => 2 + Reverse(0) * 10 => 2 + 0 * 10 => 2
Reverse(24) => 4 + Reverse(2) * 10 => 4 + 2 * 10 => 24
Reverse(247) => 7 + Reverse(24) * 10 => 7 + 24 * 10 => 247
Reverse(2476) => 6 + Reverse(247) * 10 => 6 + 247 * 10 => 2476
Таким образом, вам эффективно нужна вспомогательная функция, как предложил ваш друг. По сути, вам нужно будет вызвать функцию, которая принимает 2 аргумента.
Смотрите мой ответ для получения дополнительных подсказок...