2014-10-28 41 views
0

我需要制作一个递归函数来返回数组中的位数。获取数组中位数'X'的位数

这是我走到这一步,

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

Java应用程序通常不默默地崩溃。所以你应该得到一个Stacktrace,请在这里发布。并请多描述一下您的应用程序。目前很难理解你想要达到的目标。 – Tom 2014-10-28 12:27:47

+0

检查 - [方法来获取int数位数?](http://stackoverflow.com/questions/1306727/way-to-get-number-of-digits-in-an-int) – 2014-10-28 12:29:44

回答

1

问题是您使用的是5号尺寸,并且您可能在数组中有几个元素,然后是5(至少在您编辑问题之前)。您正在使用的数字变量,每递归调用记住它会以0

重置尝试调用录像(阵列,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; 
} 
+0

The 5 -size是一个错误的按ctrl - z很多次,我叫Rec(数组,arrSize -1),现在它不会崩溃,但它不会给出它应该的结果,如果我输入例如1,22 ,5,4返回4而不是5 – Boris 2014-10-28 13:05:19

+0

将其与我粘贴的内容相比较,并且您应该输出5。 – SMA 2014-10-28 13:08:26

+0

我在最后找到了解决方案,感谢所有的一切,呼叫非常重要。 – Boris 2014-10-28 13:22:09

0

调用函数:录像(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; 

    } 

这工作