public class 二分法递归查找 {
public static void main(String[] args)是Java程序的入口点,是程序执行的起始位置。在这个方法中,可以编写程序的主要逻辑和功能。这个方法必须按照特定的格式来定义,才能被Java虚拟机调用执行。在main方法的参数列表中,args是一个字符串数组,可以用来接收命令行参数。通过在main方法中编写代码,我们可以实现各种各样的功能,例如打印输出、计算、循环、条件判断等 {
//定义数组,注意,二分查找数组必须是有序的数组!
int[] arr = { 1, 3, 5, 7, 9, 11, 13, 15, 17 };是一个整型数组的声明和初始化语句,其中包含9个元素。每个元素的值分别是1, 3, 5, 7, 9, 11, 13, 15, 17。这样我们就创建了一个名为arr的整型数组,并且给它赋予了初始值。在后续的程序中,我们可以使用这个数组来进行各种操作,比如查找、排序、计
//接受查找后的返回值:索引值,如果没有则是-1;
//测试查找元素:9
int a = binarySearch(arr, 9, 0, arr.length - 1);
System.out.println("被查找数字的索引位置是:" + a);
}
//参数列表依次为:被查找的数组,查找的数字,头索引,尾索引!
public static int binary(int[] arr, int key, int start, int end) // 递归
{
//每次进来创建,中间索引值!
int mid = (star + end) / 2;
如果待查找的数小于起始索引或者大于结束索引,或者起始索引大于结束索引,则说明不存在该数,返回-1。
if (key arr[end] || start > end) {
return -1;
}
//如果中间值小于被查找的数,则重新定义头索引移至中间+1的位置,这样可以筛选掉一半的数字!
if (arr[mid]
//开始递归!
return binary(arr, key, mid + 1, end); // 在数组的后半部分继续进行二分查找
//否则,如果中间值大于被查找的数,则将尾索引重新移至中间-1的位置,这样可以筛选掉一半的数字!
} else if (arr[mid] > key) {
//开始递归!
return binary(arr, key, start, mid - 1);
} else {
//否者就是找到了,返回该索引!
return mid;
}
}
}
第一题:
public class CalSum {
public static void main(String[] args)是Java程序的入口点,是程序执行的起始位置。在这个方法中,可以编写程序的主要逻辑和功能。这个方法必须按照特定的格式来定义,才能被Java虚拟机调用执行。在main方法的参数列表中,args是一个字符串数组,可以用来接收命令行参数。通过在main方法中编写代码,我们可以实现各种各样的功能,例如打印输出、计算、循环、条件判断等
{
CalSum calSum = new CalSum();
int result = calSum.calculate(100); // 调用calSum对象的calculate方法,传入参数100,并将结果赋值给result变量。
System.out.println("1+2+3+...+100的总和等于" + result);
}
public int calculate(int number)
{
int result = 0;
if(number == 1)
{
result = 1;
}
else
{
result = number + calculate(number - 1);的结果是将当前的number与number-1的返回值相加。这个表达式可以用递归的方式来计算,每次递归调用时,number的值会减1,直到number等于1时停止递归。递归调用的返回值会不断累加到最终的结果中。这样,我们可以得到一个数列的和。
}
return result;
}
}
迭代是普通的循环。
例:从1加到10
int sum=0
for(int i=0;i
sum=sum+i;
}
递归是指一个函数直接或间接调用自己。
好比:从前有个庙庙里有个大和尚和小和尚,大和尚叫小和尚讲故事,小和尚说从前有个庙庙里有个大和尚和小和尚,小和尚叫大和尚讲故事,大和尚接着说从前有个庙庙里有个大和尚和小和尚,他们每天一起修行学习佛法。
递归的特点:
必有三个条件:
1. 间接或直接调用自己。
2. 在进行游戏时,一定要设定退出的条件,比如大和尚口干了不再听故事。如果没有设定退出条件,游戏可能会陷入死循环。
3。要有逻辑体(想要做的事);
public int sum(int x){
if(x
return x;
}
return x+sum(x-1);
}
int s=10;
int total=sum(s);
该例中,sum函数总是调用自己,return x+sum(x-1);
sum有退出条件, x
最后的结果是把 10+9+8+7+... 1 返回
在许多情况下,迭代和递归都可以实现相同的功能,但是有些功能迭代无法完成。此外,递归的代码更简洁,熟练使用递归可以提高代码质量。
以上是如何使用递归算法实现Java二分法查找的详细内容。更多信息请关注PHP中文网其他相关文章!