当前位置: 首页 > 知识库问答 >
问题:

递归 - 数字以相反的顺序排列

李敏学
2023-03-14

我需要实现一个递归方法printDigits,它将一个整数num作为参数,并以相反的顺序打印它的数字,每行一个数字。

这是我到目前为止所拥有的:

public class PrintDigits {

    public static void main(String[] args) {
        System.out.println("Reverse of no. is " + reversDigits(91));
    }

    /* Recursive function to reverse digits of num */
    public static int reversDigits(int number) {
        if (number == 0)
            return number;
        else {
            return number % 10;
        }
    }
}

我觉得我只缺少一行代码,但不确定我需要做什么来修复它。

共有3个答案

司寇琨
2023-03-14
public static void reversDigits(long number) {
    System.out.println(number % 10);
    if (number >= 10) {
        reversDigits(number / 10);
    }
}

这是迄今为止最短/最简单的版本;)

荀靖
2023-03-14

这并没有完全回答这个问题,但它实际上计算了整个反转的数字,而不是在计算数字时打印数字。结果是一个整数,数字顺序颠倒。比逐个打印数字的字符串版本强大得多:

public class Reverse {
    public static void main(String[] args) {
        // input int parameter
        int param = Integer.parseInt(args[0]);
        System.out.println(reverse(param)); 
    }

    public static int reverse(int input) {
        return reverse(input, 0); 
    }

    private static int reverse(int original, int reversed) {
        // get the rightmost original digit and remove it
        int rightmost = original % 10;
        original -= rightmost;
        original /= 10;

        // add rightmost original digit to left of reversed
        reversed += rightmost * Math.pow(10, numDigits(original));

        return (original == 0)
            ? reversed
            : reverse(original, reversed);
    }

    public static int numDigits(int number) {
        number = Math.abs(number);

        if (number >= 10) {
            return 1 + numDigits(number /= 10);
        } else if (number > 0) {
            return 1;
        } else {
            return 0;
        }
    }
}
孔弘盛
2023-03-14
public static void main(String[] args) {
    reverseDigits(98198187);
}

/* Recursive function to reverse digits of num */
public static void reverseDigits(long number) {
    if (number < 10) {
        System.out.println(number);
        return;
    }
    else {
        System.out.println(number % 10);
        reverseDigits(number/10);
    }
}
 类似资料:
  • 我按直接顺序列出了列表1<代码>列表 如何更改顺序。我不知道如何重写扩展类中的方法,请用例子写或说清楚。

  • 问题内容: 我有一个LinkedHashMap: 我需要从给定键的位置向后迭代。因此,如果为我提供了第十个项目的密钥,则需要向后迭代哈希表9、8、7等。 问题答案: 您不必遍历它。但是拔下钥匙并将其存储在列表中会很方便。这就是执行indexOf()类型操作的唯一方法。

  • 问题内容: 我有一个Java ee应用程序,在该应用程序中,我使用servlet来打印使用log4j创建的日志文件。在读取日志文件时,通常会寻找最后一个日志行,因此,如果servlet以相反的顺序打印日志文件,则它会更加有用。我的实际代码是: 我在互联网上找到的实现涉及使用StringBuffer并在打印之前加载所有文件,难道没有找到找到文件结尾并读取内容直到文件开头的代码轻巧的方式吗? 问题答案

  • 我试图实现一个递归合并排序算法来排序一个简单的整数数组,但我得到奇怪的值为索引在我的数组的后半部分。前半部分似乎排序精细,这是令人困惑的,因为它是递归实现的。随机整数数组在我的main方法中初始化。 } 这会产生以下输出: 未排序数组={15,9,12,19,49,43,57,70,78,87}对于第1轮:第一个=0中间=4最后=9第1轮中的数组={15,9、12,19、49,43、57,70、7

  • 问题内容: 我想以相反的顺序对字符串列表进行排序,例如: 预期结果: 我不想使用,因为在更复杂的情况下,按两个值进行过滤将无法正常工作。例如: 预期结果将是: 返回: 数字很​​简单,您可以取反值: 但是如何使用字符串呢? 问题答案: 您将不得不排序两次。Python的sort算法 稳定 ,这意味着相等的元素保持其相对顺序。使用它首先对第二个元素进行排序(以升序排序),然后仅对第一个元素以相反的顺