给定整数N ,任务是使用递归反转给定整数的数字。
例子:
Input: N = 123
Output: 321
Explanation:
The reverse of the given number is 321.
Input: N = 12532
Output: 23521
Explanation:
The reverse of the given number is 23521.
方法:请按照以下步骤解决问题:
- 递归地迭代N的每个数字。
- 如果传递的N的当前值小于10 ,则返回N。
if(num < 10)
return N;
- 否则,在每个递归调用之后(基本情况除外),返回递归函数以进行下一次迭代:
return reverse(N/10) + ((N%10)*(pow(10, (floor(log10(abs(N)))))))
where, floor(log10(abs(x))) gives the count of digits of x
((x%10)*(pow(10, (floor(log10(abs(x))))))) places the extracted unit place digits (x%10) to their desired positions
下面是上述方法的实现:
C
// C program for the above approach
#include
#include
#include
// Function to reverse the digits of
// the given integer
int reverse(int N)
{
return ((N <= 9))
? N
: reverse(N / 10)
+ ((N % 10)
* (pow(10,
(floor(log10(
abs(N)))))));
}
// Utility function to reverse the
// digits of the given integer
void reverseUtil(int N)
{
// Stores reversed integer
int result = reverse(N);
// Print reversed integer
printf("%d", result);
}
// Driver Code
int main()
{
// Given integer N
int N = 123;
// Function Call
reverseUtil(N);
return 0;
}
输出:
321
时间复杂度: O(log 10 N)
辅助空间: O(1)