/*
递归实现二分法的进化 */import java.util.Scanner;public class RecursionNext2{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 index=findArray(a,front,end,num);System.out.println(index);}//递归实现二分法public static int findArray(int []b,int front,int end,int num){int index=-1;int mid = (front+end)/2;    if(b==null){return index;}if(front<=end){if(b[mid]==num){return mid;}else if(b[mid]<num){return findArray(b,mid+1,end,num);}else if(b[mid]>num){return findArray(b,front,mid-1,num);}}return -1;}}

分析此程序:

首先二分法:

/*
二分法 */import java.util.Scanner;public class bisection{public static void main(String[]args){int []a={1,2,3,4,5,6,7,8};Scanner sc=new Scanner(System.in);System.out.println("请输入你要找的数字");int num=sc.nextInt();//调用searchArray()寻找numint index=searchArray(a,num);System.out.println(index);}//二分法public static int searchArray(int[]a,int num){int front = 0;int end=a.length-1;int count =0;//判断数组是否为空if(a==null){return -1;}while(front<=end){int mid=(front+end)/2;System.out.println("第"+(++count)+"次");if(a[mid]==num){return mid;}else if(a[mid]<num){front=mid+1;}else if(a[mid]>num){end=mid-1;}}return -1;}}

递归实际就是实现了循环的作用!

二分法首先你要确定你所穿的数组不是空,并且使数组升序排列

 //判断数组是否为空if(a==null){return -1;}

第二限制循环的条件

保证front<=end,只有在这个前提下找的的位置才保证是在数组内部寻找

然后再去判断a[mid]是否等于num,若a[mid]<num说明num在数组的mid位置到end之间,所以将front=mid+1(因为你已经判断过mid位置上的数),当a[mid]>num相同原理....二分法是用front 和end来限制,让a[mid]去比较。

while(front<=end){int mid=(front+end)/2;System.out.println("第"+(++count)+"次");if(a[mid]==num){return mid;}else if(a[mid]<num){front=mid+1;}else if(a[mid]>num){end=mid-1;}}

转载于:https://blog.51cto.com/11900208/1866008

Java递归实现二分法相关推荐

  1. java实现二分法递归_Java递归实现二分法

    /* 递归实现二分法的进化 */ import java.util.Scanner; public class RecursionNext2{ public static void main(Stri ...

  2. LeetCode 105 Construct Binary Tree from Preorder and Inorder Traversal-前序中序遍历构造二叉树-Python和Java递归解法

    题目地址:Construct Binary Tree from Preorder and Inorder Traversal - LeetCode Given preorder and inorder ...

  3. 七 递归与二分法、匿名函数、内置函数

    一 递归与二分法 一.递归调用的定义 二.递归分为两个阶段:递推,回溯 三.python中的递归效率低且没有尾递归优化 四.可以修改递归最大深度 五. 二分法 二 匿名函数 一. 什么是匿名函数? 二 ...

  4. Java 递归解决 quot;仅仅能两数相乘的计算器计算x^yquot; 问题

    Java 递归解决 "仅仅能两数相乘的计算器计算x^y" 问题 /*** 求一个数的乘方* 求x^y,y是一个正整数. 设计算器仅仅能计算两数相乘,不能一次计算n个数相乘. * 知 ...

  5. java 递归 堆栈_Java中的堆栈安全递归

    java 递归 堆栈 在本文中,摘自< Java中的函数编程 >一书,我解释了如何使用递归,同时避免了StackOverflow异常的风险. Corecursion正在使用第一步的输出作为 ...

  6. java 递归改非递归_使用Java ThreadLocals的意外递归保护

    java 递归改非递归 对于那些使用第三方工具来尝试扩展它们而又不完全了解它们的人来说,这是一个小技巧. 假定以下情况: 您想扩展一个展示分层数据模型的库(假设您要扩展Apache Jackrabbi ...

  7. java递归基础掉用_Java递归基础

    java递归基础掉用 对于那些不知道递归是什么的人(并且像个大笑者一样),请单击以下链接:Google搜索:递归,然后单击"您的意思是--"项. 希望您终于弄清楚了递归是指其自身的 ...

  8. 递归走迷宫java,java递归实现的迷宫游戏

    java递归实现的迷宫游戏 public class Migong { private int gard[][]={  {1,1,1,1,0,1,1,1}, {0,0,0,1,1,1,1,1}, {1 ...

  9. java递归删除文件夹_如何使用递归删除Java中的目录/文件夹

    java递归删除文件夹 Earlier we learned how to create a file in java and how to delete a file in java. Here w ...

最新文章

  1. [更新中]Lucene.net,中文分词技术 ICTCLAS研究
  2. 别顾着学习工作,没了生活
  3. 计算机组成原理实验认识多思网络虚拟实验系统_3D全息投影,裸眼3D,全息互动投影系统...
  4. Dubbo-Admin 功能展示与实操解析
  5. 【Linux】一步一步学Linux——gcc命令(249)
  6. gnuradio上怎么使用python文件_使用Python从PDF文件中提取数据
  7. 中国K12在线教育市场调研及用户消费行为报告
  8. maven3.6.3 配置环境变量_JDK1.8简单配置环境变量---两步曲
  9. android系统性能优化---(9)Android 绿色应用公约
  10. python静态递归函数_python—递归函数
  11. ApplicationEventMulticaster not initialized - call 'refresh' before
  12. 移动应用开发者在区块链中怎么赚钱?
  13. linux内核之系统调用
  14. 2020年最全Python常用爬虫代码就这些了(附爬虫教程)
  15. python 数字索引转excel列名
  16. Kafka 入门二 kafka的安装启动
  17. 谈心--生活不止步于乐观
  18. 解决PHP项目显示“该网页无法正常运作”,但没有显示报错内容
  19. 实战!手把手带你复现1篇视频分类顶会论文
  20. C# 多线程 System.Threading.Thread

热门文章

  1. js生日计算年龄_生男生女计算公式超准
  2. c iostream.源码_通达信常用指标:「金手指 」指标源码
  3. 2021-04-09 linux的shell脚本简单教程
  4. Python如何导入自己编写的py文件
  5. 计算机组成原理第一阶段测试,计算机组成原理随堂测验1附答案
  6. 数字语音信号处理学习笔记——语音信号的数字模型(2)
  7. FreeRTOS系列第2篇---FreeRTOS入门指南
  8. php中文件下载,PHP中文件下载
  9. sql group by having用法_神奇的 SQL 为什么 GROUP BY 之后不能直接引用原表中的列?...
  10. 程序员法律考试(3)-依法治国的基本原则和法制体系具体任务