在 Java 中,可以使用遞迴函數來判斷一個正整數是奇數還是偶數。下面是一個簡單的遞迴函數 check,它能夠做到這點:
public class EvenOddCheck {
public static boolean check(int n) {
// Base case: if n is 0, it's even, return true
if (n == 0) return true;
// Base case: if n is 1, it's odd, return false
else if (n == 1) return false;
// Recursive step: call the function with n-2
else return check(n - 2);
}
public static void main(String[] args) {
// Example usage:
int number = 5;
System.out.println("Is " + number + " even? " + check(number));
}
}
這個遞迴函數 check 的正確性基於以下幾點:
它有兩個基礎情況:當 n 等於 0 時(偶數的定義是可以被 2 整除,0 符合這一條件),函數返回 true;當 n 等於 1 時(奇數的定義是除以 2 餘 1,1 符合這一條件),函數返回 false。
遞迴步驟是減少 2,這樣做的原因是偶數減去 2 仍然是偶數,奇數減去 2 仍然是奇數。所以這樣遞迴下去最終一定會到達基礎情況。
因為每次遞迴都是確保 n 每次減少 2,所以這個遞迴函數一定會終止。當 n 是正整數時,最終 n 會變為 0 或 1,這時遞迴結束。
請注意,這個函數只對正整數有效,對於負整數或非整數值,這個函數需要進行相應的調整。此外,這個函數在 n 非常大時可能會遇到棧溢出問題,因為 Java 的遞迴調用會消耗調用棧空間。在實際應用中,直接使用 n % 2 == 0 會是一個更簡單且效率更高的方法來檢查一個數是奇數還是偶數。