Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 哪种递归方法更好?为什么是整数的倒数? public static int recursiveverse(int number,int reverseEnumber){ if(number_Java_Recursion - Fatal编程技术网

Java 哪种递归方法更好?为什么是整数的倒数? public static int recursiveverse(int number,int reverseEnumber){ if(number

Java 哪种递归方法更好?为什么是整数的倒数? public static int recursiveverse(int number,int reverseEnumber){ if(number,java,recursion,Java,Recursion,肯定不是最后一个。将状态保持变量放入静态字段只是自找麻烦。这不是说您必须设计并发,而是如果您有多个线程运行此代码,例如,共享ReverseEnumber字段将彻底破坏一切 我看不出第一个和第二个之间有什么区别。(从字面上看,它们在我看来是一样的。) 如果您的目标是通过为第二个参数(reverseEnumber)设置默认值来简化调用约定,那么只需重载您的方法: private static int reversenumber = 0; public static int recursiveRev

肯定不是最后一个。将状态保持变量放入静态字段只是自找麻烦。这不是说您必须设计并发,而是如果您有多个线程运行此代码,例如,共享
ReverseEnumber
字段将彻底破坏一切


我看不出第一个和第二个之间有什么区别。(从字面上看,它们在我看来是一样的。)

如果您的目标是通过为第二个参数(
reverseEnumber
)设置默认值来简化调用约定,那么只需重载您的方法:

private static int reversenumber = 0;

public static int recursiveReverse(int number){

    if(number <= 0) {
        return reversenumber;
    }

    reversenumber = reversenumber * 10 + (number % 10);
    number = number / 10;

    return recursiveReverse(number);  
}

我看不出第一个和第二个例子有什么区别


但是在第三个示例中使用静态变量是危险的(您每次都需要重置它,而且它不是线程安全的)

请尝试以下操作:

public static int recursiveReverse(int number) {
    return recursiveReverse(number, 0);
}

private static int recursiveReverse(int number, int reverseNumber) {
    // your code goes here
}
public int rev(int n){

如果(n我认为条件(n这是两行代码中最短/最简单的方法:

public int rev(int n){
    if(n <= 10) {
        return n;
    }
    return Integer.parseInt("" + (n % 10) + rev(n / 10));
}

如果你把
200
倒过来,它就会变成
2
我想这是作业,因为我会使用字符串而不是递归。在你把数字当作字符串对待之前,你不应该把它当作字符串吗?@Peter:你认为应该是什么?@Nilesh Salpe,前两个是相同的…@Dan Tao。我会这样做的。你显然是瞎子。Th第一个有
int number,int reversenumber
,而第二个只有
int number,int reversenumber
public int rev(int n){
    if(n <= 0) {
        return n;
    }
    return Integer.parseInt("" + (n % 10) + rev(n / 10));
}
public int rev(int n){
    if(n <= 10) {
        return n;
    }
    return Integer.parseInt("" + (n % 10) + rev(n / 10));
}
public static int reverseNumber(int n) 
{
    System.out.println(n % 10);
    return (n/10 > 0) ? reverseNumber(n/10) : n;
}