"请看代码 /** * 题目:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。 * 例如 2+22+222+2222+22222(此时共有 5 个数相加),几个数相加有键盘控制。 */ public static long cal(int num,int count){ if(num == .."

求教:Java 字符串拼接与数学运算哪个执行效率更高?

本贴最后更新于 322 天前,其中的信息可能已经沧海桑田

请看代码

    /**
     * 题目:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。
     * 例如 2+22+222+2222+22222(此时共有 5 个数相加),几个数相加有键盘控制。
     */

    public static long cal(int num,int count){
        if(num == 0)
            return 0;
        if(count == 1)
            return num;
        long temp = 0;
        for (int i = count; i > 0 ; i--) {
            temp += num * Math.pow(10,i-1);
        }
        return temp + cal(num,count-1);
    }

    public static long strAppend(int num , int count){
        if(num == 0)
            return 0;
        if(count == 1)
            return num;
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i <count ; i++) {
            sb.append(num);
        }

        long tempResult = Long.parseLong(sb.toString());

        return tempResult + strAppend(num, count - 1);
    }

题目来自这里,我想问的是上面的两个方法哪个执行效率更高, 希望能科普一下原理。。谁有更好的实现方法也希望不吝赐教 😄

暂时忽略数据不合法造成的转换错误

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2147 引用 • 7240 回帖 • 1059 关注
  • 字符串
    3 引用 • 11 回帖
感谢    关注    收藏    赞同    反对    举报    分享
2 回帖    
请输入回帖内容...
  • 88250      

    JMH 你值得拥有。

    1 回复 
    感谢    赞同    反对    举报    分享       回复
  • pangwen            

    OK,谢谢大 D! 😄

    感谢    赞同    反对    举报    分享       回复