Почему моя функция настолько медленная для определенных c значений? - PullRequest
1 голос
/ 07 апреля 2020

Программист для начинающих здесь!

Поэтому я пытаюсь создать функции для тетратации с использованием рекурсивной формулы. Я использую ту же самую функцию tetrate_F для нахождения n-го супер root некоторого большого числа. В sprRt(a, b), когда b становится слишком маленьким, функция, кажется, замедляется на тонну. Я считаю, что 2, 3 и 5 работают практически для любого значения a. Но когда для b установлено значение 4 или любое другое значение, это просто по какой-то причине занимает слишком много времени.

def tetrate_F(a, b):
    if b == 0:
        return b+1
    else:
        res = a ** tetrate_F(a, b-1)
        return(res)


def sprRt(a, b):
    l_head = []
    lt0 = []

    if b == 1:
        print("Undefined")
    elif b > 1:
        for j in range(0, a+1):
            if tetrate_F(j, b) < a:
                lt0.append(j)
            elif tetrate_F(j, b) > a:
                break
        val0 = lt0[-1]
        lt0.clear()
        l_head.append(val0)
        print(val0)

sprRt(1234567890, 4)

Как и в sprRt(1234567890, 2), я могу использовать 2, 3 или даже 5 для b и получите результат почти сразу, но не любое другое число.

Помощь будет высоко оценена, спасибо!

...