Java
Beginner
1 min read
Varargs, Recursion, and Method Best Practices
Example
import java.util.Arrays;
public class VarargsAndRecursion {
// Varargs: accept any number of ints
static int sum(int... numbers) {
int total = 0;
for (int n : numbers) total += n;
return total;
}
// Varargs mixed with regular parameters
static void log(String level, String... messages) {
for (String msg : messages) {
System.out.printf("[%s] %s%n", level, msg);
}
}
// Recursion: factorial
static long factorial(int n) {
if (n <= 1) return 1; // base case
return n * factorial(n - 1); // recursive case
}
// Recursion: Fibonacci (with memoisation to avoid exponential time)
private static long[] memo = new long[50];
static long fib(int n) {
if (n <= 1) return n;
if (memo[n] != 0) return memo[n];
memo[n] = fib(n - 1) + fib(n - 2);
return memo[n];
}
// Recursion: binary search
static int binarySearch(int[] arr, int target, int lo, int hi) {
if (lo > hi) return -1;
int mid = lo + (hi - lo) / 2;
if (arr[mid] == target) return mid;
if (arr[mid] < target) return binarySearch(arr, target, mid + 1, hi);
return binarySearch(arr, target, lo, mid - 1);
}
public static void main(String[] args) {
System.out.println(sum()); // 0
System.out.println(sum(1, 2, 3)); // 6
System.out.println(sum(10, 20, 30, 40)); // 100
log("INFO", "Server started", "Listening on port 8080");
log("ERROR", "Database connection failed");
for (int i = 0; i <= 10; i++) {
System.out.printf("%d! = %d%n", i, factorial(i));
}
System.out.print("Fibonacci: ");
for (int i = 0; i < 10; i++) System.out.print(fib(i) + " ");
System.out.println();
int[] sorted = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};
int idx = binarySearch(sorted, 23, 0, sorted.length - 1);
System.out.println("Found 23 at index: " + idx);
}
}