在“X”的位置获取数组中的位数

时间:2014-10-28 12:23:29

标签: java arrays digit

我需要创建一个返回数组中位数的递归函数。

这是我到目前为止所得到的

public static int Rec(int[] arr, int size)
{
    int numbers = 0;        

    if(size > 0)
    {
    numbers = String.valueOf(arr[size]).length() + Rec(arr, size-1); //length of digits in array
    }

    return numbers;

}

但问题是当它到达那里时它会使调试崩溃。

我认为是String.valueOf使它崩溃,关于如何获得数组第x位的位数的任何想法? (arr[x])中的位数

2 个答案:

答案 0 :(得分:1)

问题是你使用的是5号码,你可能在阵列中只有5个元素(至少在编辑你的问题之前)。你正在使用数字变量记住每次递归调用它将重置为0。

尝试从main方法调用Rec(array,array.length - 1):

public static int Rec(int[] arr, int size) {
    if (size >= 0) {
        return 1 + (int) Math.floor(Math.log10(arr[size])) + Rec(arr, size - 1);//or to keep it simple use String.valueOf(arr[size]).length() instead of 1 + (int) Math.floor(Math.log10(arr[size]))
    }
    return 0;
}

答案 1 :(得分:0)

调用函数:Rec(arr,arrSize - 1)

public static int Rec(int[] arr, int size)
    {
        int numbers = 0;        

        if(size >= 0)
        {

        numbers += String.valueOf(arr[size]).length() + Rec(arr, size -1); //length of digits in array

        }

        return numbers;

    }

这有效