哪种递归方法更好,为什么要选择整数的倒数? [英] Which of recursion method is better and why for reverse digits of integer?

查看:57
本文介绍了哪种递归方法更好,为什么要选择整数的倒数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

public static int recursiveReverse(int number, int reversenumber){

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

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

    return recursiveReverse(number, reversenumber);
}

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);  
}

推荐答案

肯定不是最后一个.将状态保持变量放在静态字段中只会带来麻烦.并不是说您必须为并发而设计,而是例如,如果有多个线程运行此代码,则共享的 reverseNumber 字段将完全破坏一切.

Definitely not the last one. Putting a state-holding variable in a static field is just asking for trouble. Not that you're necessarily designing for concurrency, but if you had multiple threads running this code, for example, the shared reverseNumber field would totally wreck everything.

我看不出第一和第二之间有什么区别.(从字面上看,它们和我看起来一样.)

I don't see any difference between the first and second. (Literally, they appear identical to me.)

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

If your goal is to simplify the calling convention by having a default value for the second parameter (reverseNumber), then simply overload your method:

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

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

这篇关于哪种递归方法更好,为什么要选择整数的倒数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆