有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在尝试完成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


共 (1) 个答案

  1. # 1 楼答案

    问题在于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