practice_problems.ipynb 6.2 KB

# Recursion practice problems
# Print the nth fibonacci term using recursion.
def fibonacci(n):
    """
    returns the nth value of the fibonacci series
    """
    assert int(n) == n and n >= 0, "The number must belong to the set of whole numbers"
    if n in (0, 1):
        return n
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)

fibonacci(6)
8
# Find the factorial of a number using recursion.
def factorial(number):
    """
    Calculates the factorial of a number using recursion.
    """
    assert int(number) == number and number >= 0, "The number must be a whole number"

    if number in (0, 1):
        return 1
    else:
        return number * factorial(number - 1)

factorial(5)
120
# Perform binary search using recursion.
def binarySearch(array, low, high, target):
    """
    Performs a binary search operation in the given array.
    """
    mid = int((low + high) / 2)
    if array[mid] == target:
        return f"Element found at position {mid}"
    elif array[mid] > target:
        high = mid - 1
        return binarySearch(array, low, high, target)
    elif array[mid] < target:
        low = mid + 1
        return binarySearch(array, low, high, target)
    else:
        return "Element not found"

# Driver Code
if __name__ == "__main__":
    arr = [2, 3, 4, 5, 6, 7]
    low = 0
    high = len(arr) - 1
    target = 5
    print(binarySearch(arr, low, high, target))
Element found at position 3
# Find the sum of digits using recursion
def number_sum(number):
    """
    finds the sum of all the elements of the number.
    """
    assert int(number) == number, "Must be an integer"
    if number == 0:
        return 0
    else:
        return number%10 + number_sum(number//10)

number_sum(121)
4
# Find the power of a number using recursion
def power(number, exponent):
    """
    calculates the positive power of a number.
    """
    if exponent == 0:
        return 1
    else:
        return number * power(number, exponent - 1)

power(5, 3)
125
# Find the GCD of two numbers using recursion
def gcd(num_1, num_2):
    """
    calculated the gcd of two numbers
    """
    if num_1 == num_2:
        return num_1
    
    elif num_1 > num_2:
        num_1 -= num_2
        return gcd(num_1, num_2)
    else:
        num_2 -= num_1
        return gcd(num_1, num_2)

gcd(50, 25)
25
# Convert a number into binary format using recursion
def binary(number):
    """
    converts a number into binary format
    """
    assert int(number) == number, "The number must be an integer"

    if number == 0:
        return number
    else:
        return number%2 + 10*binary(number//2)

binary(4)
100