# Write a program to reverse digits of a number

Hello Everyone,

Write a program to reverse the digits of an integer.

Examples :

Input : num = 12345
Output: 54321

Input : num = 876
Output: 678

ITERATIVE WAY

Algorithm:

Input: num (1) Initialize rev_num = 0 (2) Loop while num > 0 (a) Multiply rev_num by 10 and add remainder of num divide by 10 to rev_num rev_num = rev_num*10 + num%10; (b) Divide num by 10 (3) Return rev_num

Example:

num = 4562
rev_num = 0
rev_num = rev_num *10 + num%10 = 2
num = num/10 = 456
rev_num = rev_num *10 + num%10 = 20 + 6 = 26
num = num/10 = 45
rev_num = rev_num *10 + num%10 = 260 + 5 = 265
num = num/10 = 4
rev_num = rev_num *10 + num%10 = 2650 + 4 = 2654
num = num/10 = 0

Program:

`#include <bits/stdc++.h>`

`using` `namespace` `std;`

`/* Iterative function to reverse digits of num*/`

`int` `reversDigits(` `int` `num)`

`{`

` ` `int` `rev_num = 0;`

` ` `while` `(num > 0) {`

` ` `rev_num = rev_num * 10 + num % 10;`

` ` `num = num / 10;`

` ` `}`

` ` `return` `rev_num;`

`}`

`/*Driver program to test reversDigits*/`

`int` `main()`

`{`

` ` `int` `num = 4562;`

` ` `cout << ` `"Reverse of no. is "` `<< reversDigits(num);`

` ` `getchar` `();`

` ` `return` `0;`

`}`

Output

Reverse of no. is 2654

Time Complexity: O(log(n)), where n is the input number.

RECURSIVE WAY

`// C++ program to reverse digits of a number`

`#include <bits/stdc++.h>`

`using` `namespace` `std;`

`/* Recursive function to reverse digits of num*/`

`int` `reversDigits(` `int` `num)`

`{`

` ` `static` `int` `rev_num = 0;`

` ` `static` `int` `base_pos = 1;`

` ` `if` `(num > 0) {`

` ` `reversDigits(num / 10);`

` ` `rev_num += (num % 10) * base_pos;`

` ` `base_pos *= 10;`

` ` `}`

` ` `return` `rev_num;`

`}`

`// Driver Code`

`int` `main()`

`{`

` ` `int` `num = 4562;`

` ` `cout << ` `"Reverse of no. is "` `<< reversDigits(num);`

` ` `return` `0;`

`}`

Output

Reverse of no. is 2654

Time Complexity: O(log(n)) where n is the input number.