使用递归传递带有基本情况的参数
Using recursion to pass parameters with base cases
我正在尝试完成 printConvertedNumber 方法以使用递归在第二个参数指定的数字基数中打印第一个参数。转换为基数 2、4 和 8 都使用相同的算法。将所需基数作为右操作数的 % 和 / 运算符用于将数字转换为所需基数。我试图不在 class.
中声明任何新变量或对象
它应该是这样的,sample
这是我目前的情况,请注意我的尝试无效
import java.util.Scanner;
class NumberBaseConversion
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int number,
base;
do
{
System.out.print("Enter a positive base 10 number: ");
number = input.nextInt();
} while (number <= 0);
do
{
System.out.print("Enter a base (2, 4, or 8): ");
base = input.nextInt();
} while (base != 2 && base != 4 && base != 8);
printConvertedNumber(number, base);
System.out.println();
}
private static void printConvertedNumber(int num, int base)
{
if (base <= 0)
{
return;
}
System.out.println("num: " + num + ", base: " + base);
printConvertedNumber(num/base,num%base);
}
}
这是我 运行 它
时得到的
问题出在您的 printConvertedNumber
方法上。一旦 num
降到 0 以下,您就不会检查。此外,对该方法的递归调用有点偏离。试试这个:
private static void printConvertedNumber(int num, int base) {
if (num <= 0) {
return;
}
printConvertedNumber(num / base, base);
System.out.print(num % base);
}
以下是一些示例运行:
run:
Enter a positive base 10 number: 10
Enter a base (2, 4, or 8): 2
1010
run:
Enter a positive base 10 number: 4
Enter a base (2, 4, or 8): 2
100
run:
Enter a positive base 10 number: 10
Enter a base (2, 4, or 8): 8
12
run:
Enter a positive base 10 number: 10
Enter a base (2, 4, or 8): 4
22
run:
Enter a positive base 10 number: 23
Enter a base (2, 4, or 8): 4
113
您可以对照this website检查您的答案。
另外,JGrasp 的荣誉。那是我的第一个 IDE.
我正在尝试完成 printConvertedNumber 方法以使用递归在第二个参数指定的数字基数中打印第一个参数。转换为基数 2、4 和 8 都使用相同的算法。将所需基数作为右操作数的 % 和 / 运算符用于将数字转换为所需基数。我试图不在 class.
中声明任何新变量或对象它应该是这样的,sample
这是我目前的情况,请注意我的尝试无效
import java.util.Scanner;
class NumberBaseConversion
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int number,
base;
do
{
System.out.print("Enter a positive base 10 number: ");
number = input.nextInt();
} while (number <= 0);
do
{
System.out.print("Enter a base (2, 4, or 8): ");
base = input.nextInt();
} while (base != 2 && base != 4 && base != 8);
printConvertedNumber(number, base);
System.out.println();
}
private static void printConvertedNumber(int num, int base)
{
if (base <= 0)
{
return;
}
System.out.println("num: " + num + ", base: " + base);
printConvertedNumber(num/base,num%base);
}
}
这是我 运行 它
时得到的问题出在您的 printConvertedNumber
方法上。一旦 num
降到 0 以下,您就不会检查。此外,对该方法的递归调用有点偏离。试试这个:
private static void printConvertedNumber(int num, int base) {
if (num <= 0) {
return;
}
printConvertedNumber(num / base, base);
System.out.print(num % base);
}
以下是一些示例运行:
run:
Enter a positive base 10 number: 10
Enter a base (2, 4, or 8): 2
1010run:
Enter a positive base 10 number: 4
Enter a base (2, 4, or 8): 2
100run:
Enter a positive base 10 number: 10
Enter a base (2, 4, or 8): 8
12run:
Enter a positive base 10 number: 10
Enter a base (2, 4, or 8): 4
22run:
Enter a positive base 10 number: 23
Enter a base (2, 4, or 8): 4
113
您可以对照this website检查您的答案。
另外,JGrasp 的荣誉。那是我的第一个 IDE.