我需要创建一个返回数组中位数的递归函数。
这是我到目前为止所得到的
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]
)中的位数
答案 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;
}
这有效