Имеет ли смысл оптимизировать функцию?

Читал в определенных местах, что рекурсия работает медленнее, чем обычный алгоритм. Столкнулся с такой ситуацией. Надо реализовать перебор для каждого значения в строгом порядке. Написал как есть не думая.

Как бы работает так как надо, но меня все-таки терзает рекурсия... Вот я и думаю стоит писать рекурсию для такого кода или пусть и так работает?

def get_option_number(number):
    if number == 50:
        return [25, 75]
    else:
        if number == 25:
            return [50, 75]
        else:
            if number == 75:
                return [50, 25]
            else:
                return [75, 50, 25]

Ответы (2 шт):

Автор решения: CrazyElf

Непонятно, при чём здесь рекурсия. А если вас беспокоит вложенность if-ов, то можно применить словарь, чтобы использовать всего одну проверку, да и выглядит такой код короче:

{
    25: [50, 75],
    50: [25, 75],
    75: [50, 25],
}.get(number, [75, 50, 25])
→ Ссылка
Автор решения: SergFSM

для python 3.10:

def get_option_number(number):
    match number:
        case 50: return [25, 75]
        case 25: return [50, 75]
        case 75: return [50, 25]
        case _ : return [75, 50, 25]
→ Ссылка