TypeError: неподдерживаемые типы операндов для*: 'NoneType' и 'int'


Я не смог найти свою ошибку в приведенном ниже коде. Если я говорю "вернуть" вместо "печать" в другой стороны, код не может выполнять другой стороны, он только делает расчеты, если часть. Как я могу это исправить?

def calculatePerimeter(length, depth):
    if depth == 1:
        return 3 * length
    else:
        print (calculatePerimeter(length, depth-1) * (4/3)**(depth)) / ((4/3)**(depth-1))

calculatePerimeter(100, 3)
1 2

1 ответ:

Вам нужно вернуть значение в предложении else, иначе умножать нечего (кроме как при выполнении последнего вызова в рекурсии). Затем вам нужно вызвать print при вызове функции.

def calculatePerimeter(length, depth):
    if depth == 1:
        return 3 * length
    else:
        return (calculatePerimeter(length, depth-1) * (4/3)**(depth)) / ((4/3)**(depth-1))

print(calculatePerimeter(100, 3))