Чтобы найти сумму двух дробей, необходимо привести их к общему знаменателю и сложить полученные дроби. Можно использовать рекурсивную функцию для нахождения наименьшего общего кратного знаменателей дробей, а затем привести каждую дробь к этому знаменателю и выполнить сложение.
Вот как может выглядеть рекурсивная функция нахождения наименьшего общего кратного двух чисел:
def lcm(a, b):
"""Нахождение наименьшего общего кратного двух чисел"""
if a == 0 or b == 0:
return 0
else:
return abs(a * b) // gcd(a, b)
Здесь используется функция gcd, которая находит наибольший общий делитель двух чисел:
def gcd(a, b):
"""Нахождение наибольшего общего делителя двух чисел"""
while b:
a, b = b, a % b
return a
Теперь можно написать функцию для нахождения суммы двух дробей:
def add_fractions(a, b, c, d):
"""Сложение двух дробей"""
# Находим общий знаменатель
common_denominator = lcm(b, d)
# Приводим первую дробь к общему знаменателю
a *= common_denominator // b
b = common_denominator
# Приводим вторую дробь к общему знаменателю
c *= common_denominator // d
d = common_denominator
# Складываем дроби
numerator = a + c
# Сокращаем дробь
divisor = gcd(numerator, common_denominator)
numerator //= divisor
common_denominator //= divisor
return numerator, common_denominator
Здесь a/v и d/c - это дроби, которые нужно сложить, причем a, b, c и d - это их числители и знаменатели соответственно. Функция add_fractions возвращает кортеж с числителем и знаменателем полученной суммы.
Пример использования:
>>> add_fractions(1, 4, 3, 8)
(5, 8)
Здесь мы складываем дроби 1/4 и 3/8 и получаем дробь 5/8 в качестве результата.