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

请看代码

    /**
     * 题目:求 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 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2072 引用 • 6869 回帖 • 1150 关注
  • 字符串
    3 引用 • 11 回帖
感谢    关注    收藏    赞同    反对    举报    分享