55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
from typing import List, Optional
|
|
|
|
|
|
# Task 4.1: Write a code with recursion for calculating summ of all array entries
|
|
def calculate_recursion_summ(array_of_ints: List[int]) -> int:
|
|
if len(array_of_ints) == 0:
|
|
return 0
|
|
return array_of_ints[0] + calculate_recursion_summ(array_of_ints[1:])
|
|
|
|
|
|
print(calculate_recursion_summ([5, 5, 5, 5, 5]))
|
|
|
|
|
|
# Task 4.2: Write a code with recursion for calculating the amount of elements in List
|
|
def calculate_list_length(array_of_ints: List[int]) -> int:
|
|
if len(array_of_ints) == 1:
|
|
return 1
|
|
return 1 + calculate_list_length(array_of_ints[1:])
|
|
|
|
|
|
print(calculate_list_length([1, 2, 3, 4, 5, 6, 7, 8]))
|
|
|
|
|
|
# Task 4.3: Write a code to find a highest list value with recursion
|
|
def find_highest_value_in_lits(array_of_ints: List[int]) -> int:
|
|
if len(array_of_ints) == 1:
|
|
return array_of_ints[0]
|
|
elif len(array_of_ints) == 2:
|
|
return (
|
|
array_of_ints[0]
|
|
if array_of_ints[0] > array_of_ints[1]
|
|
else array_of_ints[1]
|
|
)
|
|
else:
|
|
sub_max = find_highest_value_in_lits(array_of_ints[1:])
|
|
return array_of_ints[0] if array_of_ints[0] > sub_max else sub_max
|
|
|
|
|
|
print(find_highest_value_in_lits([1, 2, 3, 4, 5, 4, 3, 2, 1, 1231]))
|
|
|
|
|
|
# Task 4.4: Make binary search using recursion
|
|
def binary_search(array_of_ints: List[int], target_value: int) -> Optional[int]:
|
|
array_len = len(array_of_ints)
|
|
if array_len == 1:
|
|
return array_of_ints[0] if array_of_ints[0] == target_value else None
|
|
max_left = array_of_ints[array_len // 2]
|
|
return (
|
|
binary_search(array_of_ints[: array_len // 2], target_value)
|
|
if target_value < max_left
|
|
else binary_search(array_of_ints[array_len // 2:], target_value)
|
|
)
|
|
|
|
|
|
print(binary_search([1, 2, 3, 4, 5], 4))
|