微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅具有两个参数的递归isMember方法!

如何解决仅具有两个参数的递归isMember方法!

| 我需要创建一个名为isMemeber的递归布尔方法。该方法仅应接受两个参数:数组和值。如果在数组中找到该值,则该方法应返回true;如果在数组中找不到该值,则应返回false。 我认为基本情况将是如果传递的数组为空,但是我需要递归情况的帮助:
public static boolean isMember(int[] array,int value)
{
    if(array.length==0){
        return false; 
    }else{
        return isMember(???);           
    }
}
这是带有位置变量的外观:
public static boolean isMember(int[] array,int value,int position)
{
    if (position > -1)
    {

        if (array[position] == value)
        {
            return true;
        }
        else
        {
            return isMember(array,value,position - 1);
        }
    }
    return false;

}
    

解决方法

        如果需要使用递归,则可以在每次递归上复制数组。这是无效的,但是与使用循环相比,使用递归效率低下。例如
Arrays.indexOf()
public static boolean isMember(int[] array,int value) {
    if(array.length == 0) return false; 
    if(array[0] == value) return true;
    int[] array2 = new int[array.length-1];
    System.arraycopy(array,1,array2,array2.length);
    return isMember(array2,value);           
}
    ,        您的问题有点问题。如果要使用递归,则每个数组元素都需要有一个元素子集,否则您将传递给递归方法吗?如果不是casr,并且情况如您所述,那么使用递归解决此问题是不合适的。另外,您缺少值比较。     ,        请参阅MSDN Array类。看起来是c#。也许尝试
Array.Find<T
>方法。 更新: 对于Java,我建议您查看Arrays(Java 2平台): binarySearch   公共静态int binarySearch(int []   一种,                                  整数键)      使用二进制搜索算法在指定的int数组中搜索指定的值。在进行此调用之前,必须对数组进行排序(如通过上述sort方法)。如果   它没有排序,结果是   未定义。如果数组包含   具有指定的多个元素   值,无法保证哪一个   将被发现。
Parameters:
    a - the array to be searched.
    key - the value to be searched for. 
Returns:
    index of the search key,if it is contained in the list; otherwise,> (-(insertion point) - 1). 
     插入点定义为将键插入列表的点:大于键的第一个元素的索引;如果所有元素,则为list.size()   列表中的键小于指定的键。请注意,这保证了当且仅当找到密钥时,返回值才会> = 0。另请参见:sort(int [])     ,        如果这是家庭作业,并且他们希望递归,那么也许您应该: 1查找数组的中间值,并检查其是否匹配。如果匹配,则返回true 2将函数应用于数组的前半部分。如果返回true,则返回true 3将功能应用到Aray的后半部分。如果返回true,则返回true 4返回假 没有代码,因为这是家庭作业。 编辑:数组有序吗?     ,        我只是在做问题,并在其他方法中查看答案。当您必须将名称与字符串数组匹配时,这可能很有用。
public class Recursion {

    public static void main(String[] args) {
        String[] array = {\"Tom\",\"Mary\"};
        if(isMember(array,\"John\"))
            System.out.print(\"Found!\");
        else
            System.out.println(\"Not Found!\");

    }

    public static boolean isMember(String[] array,String name)
    {   
        int i = array.length;
        if(array.length == 0)
            return false;
        if(array[i - 1].equals(name))
            return true;
        else
        {
            String[] array2 = new String[array.length - 1];
            for(int b = 0; b< array.length -1; b++)
            {
                array2[b] = array[b];
            }
            return isMember(array2,name);
        }
    }
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。