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中文網其他相關文章!