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

请看代码

    /**
     * 题目:求 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);
    }

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

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