我不知道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;
}
}
答案 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会员吗?假