All Flashcards
What is the definition of Recursion?
A method of solving a problem where the solution depends on solutions to smaller instances of the same problem. A function calls itself with a smaller version of the original problem.
What is the definition of Base Case?
A condition in a recursive method that terminates the recursive calls and provides a direct solution.
What is the definition of Recursive Call?
When a function calls itself with a modified version of the original problem, usually after checking the base case.
What is the definition of Binary Search?
A search algorithm that finds the position of a target value within a sorted array by repeatedly dividing the search interval in half.
What is the definition of Merge Sort?
An efficient, general-purpose, comparison-based sorting algorithm that divides an array into two halves, sorts each half, and then merges the sorted halves back together.
What does the following code output?
java
public int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
System.out.println(factorial(4));
24
Identify the error in the following code:
java
public int factorial(int n) {
return n * factorial(n-1);
}
Missing base case, which will cause a stack overflow error.
What does the following code output?
java
public void traverseArray(int[] array, int index) {
if (index == array.length) {
return;
}
System.out.println(array[index]);
traverseArray(array, index + 1);
}
int[] arr = {1, 2, 3};
traverseArray(arr, 0);
1 2 3
What does the following code output?
java
public int binarySearch(int[] array, int target, int low, int high) {
if (low > high) {
return -1;
}
int mid = (low + high) / 2;
if (array[mid] == target) {
return mid;
} else if (target < array[mid]) {
return binarySearch(array, target, low, mid - 1);
} else {
return binarySearch(array, target, mid + 1, high);
}
}
int[] arr = {2, 4, 6, 8, 10};
System.out.println(binarySearch(arr, 6, 0, arr.length - 1));
2
Identify the potential issue in the following binary search code:
java
int mid = (low + high) / 2;
Integer overflow can occur if low + high exceeds the maximum integer value. Using mid = low + (high - low) / 2; is a safer alternative.
Predict the output of the following code:
java
public int mystery(int n) {
if (n <= 0) {
return 0;
} else {
return n + mystery(n - 2);
}
}
System.out.println(mystery(5));
9
What is the output of the following code?
java
public int recursiveMethod(int num) {
if (num == 0)
return 1;
else
return num * recursiveMethod(num - 1);
}
System.out.println(recursiveMethod(3));
6
What is the output of the following code?
java
public int method(int num) {
if (num == 5)
return 5;
else
return num + method(num + 1);
}
System.out.println(method(2));
14
What is the output of the following code?
java
public int method(int num) {
if (num == 0)
return 0;
else
return 1 + method(num / 2);
}
System.out.println(method(8));
4
What is the output of the following code?
java
public int method(int num) {
if (num == 0)
return 0;
else
return 1 + method(num - 1);
}
System.out.println(method(4));
4
What are the differences between recursion and iteration?
Recursion: Solves problems by breaking them into smaller, self-similar subproblems. Can be more elegant for some problems. | Iteration: Solves problems by repeating a block of code until a condition is met. Generally more efficient in terms of speed and memory.
What are the differences between linear search and binary search?
Linear Search: Checks each element sequentially. Works on unsorted arrays. | Binary Search: Repeatedly divides the search interval in half. Requires a sorted array.
What are the key differences between iterative and recursive binary search?
Iterative Binary Search: Uses loops to narrow the search space. More efficient in terms of memory usage. | Recursive Binary Search: Calls itself with smaller sub-arrays. Can be more concise and easier to read for some programmers.