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

Java递归1234到4321例如

严亮
2023-03-14

我有一个问题,如何更好地完成这项任务,我有一种版本,但我确信可能有一种更好、更短的方法来完成这项工作。我需要取任何整数(将其作为一个整数返回,而不将其转换为字符串),但不要在结尾处使用0(100、120),而是像1234或4132。我需要取这个数字,并使用递归将其重写为另一种方式,例如1234到4321、4132到2314,也许有一种方法叫它,我个人不知道。

以下是我得到的信息:

public static int reverse(int r, int n, int k){
    if(r==0)
        return 0;
    else
        return + (r%10) * (int)Math.pow(10, (n-k-1))+reverse (r/10, n, k+1)
}

public static void main(String[] args) {
    System.out.println(reverse(1234, 4, 0));
}

共有3个答案

穆飞龙
2023-03-14

没有注意到递归部分。

public static void main(String[] args) {
    int i = 589;
    System.out.println(reverse(i));
}
public static int reverse(int k){
    if(k/10 == 0){return k;}
    else return (k%10 * (int)Math.pow(10, (int)Math.log10(k))) + reverse(k /10);
}

解释:

  • k为您提供int的最后一位数字
  • (int)(Math.log10(k))返回整数中的位数减去1
江俊能
2023-03-14

当前代码无法编译。在该行中添加了< code>):

从 if(r==0{ 更改为 if(r==0){

并添加了在这一行return(r)*(int)Math。pow(10,(n-k-1))反向(r/10,n,k1)

在这两个更改之后,您的代码将如下所示:

public static int reverse(int r, int n, int k){
    if(r==0)
    {
        return 0;
    }else{
        return + (r%10) * (int)Math.pow(10, (n-k-1))+reverse (r/10, n, k+1);
    }
}

如果数字以0结尾,程序不会向用户显示任何特殊消息,即1230将返回321。在这种情况下,也许可以打印一条消息(“数字不得以0结尾)或抛出异常?

柯波
2023-03-14

使用int的String表示可以使代码更具可读性。

尝试:

Integer.parseInt(new StringBuilder(r+"").reverse().toString());
 类似资料:
  • 一切似乎都很好,但是这一行有一个错误: 错误是:构造函数ArrayList(Arrays.asList(i), ArrayList)未定义 我知道错误是说数组的asList方法不接受ArrayList,但是我如何在列表中添加因式分解返回的项呢?这种递归真的把我搞糊涂了

  • 本文向大家介绍java递归算法的实例详解,包括了java递归算法的实例详解的使用技巧和注意事项,需要的朋友参考一下 递归三要素: 1、明确递归终止条件; 2、给出递归终止时的处理办法; 3、提取重复的逻辑,缩小问题规模。 1、1+2+3+…+n 2、1 * 2 * 3 * … * n 3、斐波那契数列 前两项均为1,第三项开始,每一项都等于前两项之和。即:1,1,2,3,5,8,… 4、二叉树的遍

  • 本文向大家介绍Java中递归原理实例分析,包括了Java中递归原理实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了Java中递归原理。分享给大家供大家参考。具体分析如下: 解释:程序调用自身的编程技巧叫做递归。 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一

  • 编写一个方法writeChars,该方法接受整数参数n,并按如下方式输出n个字符。输出的中间字符应始终为星号(“*”)。如果要求您写出偶数个字符,则中间会有两个星号(“**”)。在星号之前,您应写出少于个字符(“ 我已经设法解决了这个问题,但不太明白一句话: 为什么是递归情况: n-2?而不是n-1?

  • 问题内容: 我是Java开发的新手。我有一个关于Java递归导入的快速问题。 假设包“ pkg”包含以下内容 A级 程序包B(依次包含B1类) 程序包C(依次包含C1类) 如果使用为什么我不允许从包“ B”和“ C”中导入类? 我想了解Java不允许我进行递归导入的背后原理。 问题答案: 您的问题措辞不好,因为如果您愿意,那么您当然可以从包和中导入类。也就是说,这样做非常好: 但是我假设您真正要问

  • 程序调用自身的编程技巧称为递归(recursion),它做为一种算法在程序设计语言中广泛应用。 Java 支持递归,在 Java 编程中,递归是允许方法调用自身调用的属性。调用自身的方法称为是递归的。 递归的典型例子是数字的阶乘。数字 N 的阶乘是 1 到 N 之间所有整数的乘积。例如 3 的阶乘就是 1×2×3。下面的程序使用递归来计算数字的阶乘。 该程序产生的输出如下所示: 3的阶乘是 6 4