Java递归实现二分法,希望各位指点一下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java递归实现二分法,希望各位指点一下相关的知识,希望对你有一定的参考价值。

/*
3.使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。使用递归实现
  */
  import java.util.Scanner;
  public class Recursion{
	  public static void main(String[]args)
	  {
		  System.out.println("请输入要找的整数");
		  Scanner sc=new Scanner(System.in);
		  int num = sc.nextInt();
	
		  int []a={1,2,3,4,5,6,7,8,9};
    	  int front = 0;
	      int end = a.length-1;
		  int mid = (front+end)/2;
          
		  //递归实现二分法
		 int index=findArray(a,front,mid,end,num);
		  if(index!=-1)
		  {
			  System.out.println("找到该数"+index);
		  }
		  else
		  {
			  System.out.println(index);
		  }
	 }
	 
	 public static int findArray(int[]b,int front,int mid,int end,int num)
	 {
		int index = -1;
		 if(front==end)
		 {
			if(b[mid]==num)
			{
				return mid;
			}
			else
			{
				return index;
			}
		 }
		  
		  else if(front<end)
		  {
		 
			if(b[mid]==num)
			{
				index = mid;
				return index;
			}
			else if(b[mid]>num)
			{
				end = mid-1;
				mid = (front+end)/2;
				
				return findArray(b,front,mid,end,num);
			}
			else if(b[mid]<num)
			{
				front=mid+1;
				mid=(front+end)/2;
			    
				return findArray(b,front,mid,end,num);
			 
			}
			
	    
		 }
		 //为什么下面的else需要注释掉,不注释掉编译会报错说缺少返回值
		   else
		   {
			   return index;
		    }
	  //  return index;
		
		 
  }
  }

为什么程序的报错,说else语句之后缺少返回值

本文出自 “11890208” 博客,请务必保留此出处http://11900208.blog.51cto.com/11890208/1865846

以上是关于Java递归实现二分法,希望各位指点一下的主要内容,如果未能解决你的问题,请参考以下文章

最大二分匹配匈牙利算法的python实现

二分查找 6不6(Java实现)

C/C++ 二分查找算法(非递归实现)

java实现二分查找(迭代与递归)

java实现二分查找(迭代与递归)

Java源码分析:二分查找 + 循环递归实现