java - 使用递归传递具有基本情况的参数

标签 java recursion radix

我正在尝试完成 printConvertedNumber 方法,以使用递归来打印第二个参数指定的数字基数中的第一个参数。转换为基数 2,4 和 8 都使用相同的算法。以所需基数作为正确操作数的 % 和/运算符用于将数字转换为所需基数。我试图不在类中声明任何新变量或对象。

它应该是这样的,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);
  }
}

这是我运行时得到的结果

what i get

最佳答案

问题出在您的 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。

关于java - 使用递归传递具有基本情况的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37056463/

相关文章:

java - java中没有括号

recursion - 所有的调度问题都是 NP-Hard 吗?

java - 如何使用特定基数将任何有效字符串解析为整数?

java - 获取 PrintWriter 写入的文件

java - LiferayDispatcherPortlet - 类的名称是什么?

java - 引用了未解析的外部符号 __imp__JNI_CreateJavaVM@12

在C中使用递归计算pi值

algorithm - 为什么这不能递归工作?

c# - 有没有办法为重载运算符调用基方法? C#

c++ - 在不破坏封装的情况下访问基类元素