用递归求一个数的倒数的 Java 程序
原文:https://www . geesforgeks . org/Java-program-to-find-reverse-of-number-use-recursion/
递归是一个函数反复调用自己,直到落在基础条件下,我们的动机达到的过程。
要使用递归解决任何问题,我们只需遵循以下步骤:
- 从与较大/原始问题相似的问题中假设较小的问题。
- 决定最小有效输入或最小无效输入的答案,作为我们的基本条件。
- 逼近解,将答案与递归函数给出的较小问题联系起来,用它找到较大/原始问题的答案。
示例:
Input: 14689
Output: 98641
Input: 7654321
Output: 1234567
方法 1:
- 在这种方法中,我们可以简单地打印一个数字的单位数字。
- 然后在去掉这个单位数字(number/10)后调用这个数字的递归函数
- 这个过程一直持续到数字减少到一位数。
示例:
num = 82695
reverse(82695)
|
|__print(5)
reverse(8269)
|
|__print(9)
reverse(826)
|
|__print(6)
reverse(82)
|
|__print(2)
reverse(8)
|
|__print(8)
return
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to reverse
// an integer recursively
class GFG {
// Recursive function to print
// the number in reversed form
public static void Reverse(int num)
{
// base condition to end recursive calls
if (num < 10) {
System.out.println(num);
return;
}
else {
// print the unit digit of the given number
System.out.print(num % 10);
// calling function for remaining number other
// than unit digit
Reverse(num / 10);
}
}
// driver code
public static void main(String args[])
{
// number to be reversed
int num = 98765;
System.out.print("Reversed Number: ");
// calling recursive function
// to print the number in
// reversed form
Reverse(num);
}
}
Output
Reversed Number: 56789
方法 2:
- 在这种方法中,我们可以简单地维护一个变量,在这个变量中我们可以存储到目前为止颠倒的数字。
- 我们可以这样做:从数字中提取一个单位数字,然后将提取的整数加到反转的数字中
- 但这里的关键因素是,我们必须将反数乘以 10,然后再将提取的数字加到反数上。
示例:
num = 48291
ans = 0 -> variable to store reversed number
How this works:
reverse(num)
|
|__ temp = num % 10 -> extracting unit digit from nnumber
ans = ans*10 + temp -> adding temp at unit position in reversed number
reverse(num/10) -> calling function for remaining number
Implementation:
reverse(48291)
|
|__ temp=1
ans= 0*10 + 1 --> ans=1
reverse(4829)
|
|__ temp=9
ans= 1*10 + 9 --> ans=19
reverse(482)
|
|__ temp= 2
ans= 19*10 +2 --> ans=192
reverse(48)
|
|__ temp=8
ans=192*10 + 8 --> ans=1928
reverse(4)
|
|__ temp=4
ans=1928*10 +4 --> ans=19284
reverse(0)
|
|__ return ans
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to reverse an integer recursively
class GFG {
// Variable to store reversed
// number after every
// recursive call
static int ans = 0;
static int Reverse(int var)
{
// base condition to end the
// recursive calling of function
if (var == 0) {
// We have reversed the
// complete number and
// stored in ans variable
return ans;
}
if (var > 0) {
// temp variable to store the digit at unit
// place in the number
int temp = var % 10;
// Add this temp variable in the ans variable
// which stores the number reversed till now
ans = ans * 10 + temp;
// recursive calling of function to reverse the
// remaining number
Reverse(var / 10);
}
// returning final answer when the number is
// reversed completely
return ans;
}
public static void main(String[] args)
{
// Number to be reversed
int var = 98765;
// Variable to store reversed number returned by
// reverse function
int rev;
// Calling reverse function and storing the return
// value in rev variable
rev = Reverse(var);
// Printing the Reversed Number
System.out.println("Reversed number: " + rev);
}
}
Output
Reversed number: 56789
注意:发生溢出时,Java 不会抛出异常,因此如果反转数大于 Integer,可能会出现溢出问题。MAX_VALUE (2147483647) 在方法 2 中,但是在方法 1 中不会有这样的问题。
版权属于:月萌API www.moonapi.com,转载请注明出处