如何在一个也是递归的布尔语句中写出一个元素是否是一个数组的成员?

时间:2015-02-27 22:56:05

标签: java arrays recursion boolean

我不知道if语句应该放什么,我正在上课,而且我仍然是该语言的新手。如果元素x是数组A []的成员,则需要递归返回true,否则返回false。

public static Boolean member (int x, int A[])
{
   if (     )//base case
       return true;
   else // general case
{

      int[] T= new int [A.length-1];
      for (int i=1; I<A.length; i++)
            T[i-1]=A[i];
      return false;
  }
}

3 个答案:

答案 0 :(得分:1)

假设你有这个功能/方法:search(array a, int x, int index)
(1)检查是否index == a.length,如果是,则返回false;
(2)检查x是否等于元素a[index],如果是,则返回true;
(3)否则致电并返回search(a, x, index + 1)

这是pseude-code,你只需要用Java编写它 函数search是递归的。

答案 1 :(得分:0)

制作了一个项目,这很有效。

package recursiveTest;

public class test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int [] test = new int[10];
        for(int i = 0; i < 10; i++){
            test[i] = i;
        }
        System.out.println(member(4, test));
    }
    public static Boolean member (int x, int A[])
    {
        Boolean res = false;
        if(A.length > 0){
            if(A[0] != x){
                int [] A_NEW = CreateANew(A);
                res = member(x, A_NEW);
            }else{
                res = true;
            }
        }
        return res;

    }
    public static int[] CreateANew(int A[]){
        int [] A_NEW = new int [A.length-1];
        for(int i = 1; i < A.length; i++){
            A_NEW[i-1] = A[i];
        }
        return A_NEW;
    }
}

答案 2 :(得分:0)

以下是另一种方法:我尝试尊重您的初始代码流

public static Boolean member (int x, int A[])
{
   if ( x == A[0]    )//base case
       return true;
   else // general case
{

     if (A.length == 1) {
         return false;
     }
     int B[] = new int[A.length-1];
     System.arraycopy(A, 1, B, 0, B.length);
     return member(x, B);
  }
}

测试示例

public static void main(String[] args) {

    int A[] = {5,6,7,8,11,25,135,256,1875,1254};
    boolean membershipOf25 = member(25,A);
    System.out.println("Is 25 member? " + membershipOf25);

    boolean membershipOf256 = member(256,A);
    System.out.println("Is 256 member? " + membershipOf256);

    boolean membershipOf109 = member(109,A);
    System.out.println("Is 109 member? " + membershipOf109);


}

结果:

  

是25名会员吗?真

     

是256名会员吗?真

     

是109会员吗?假