2**n -1
также 1 + 2 + 4 + ... + 2 n-1 , которые могут быть преобразованы в одну рекурсивную функцию (без второго вычитать 1от степени 2).
Подсказка : 1 + 2 * (1 + 2 * (...))
Решение ниже, не смотрите, еслиВы хотите сначала попробовать подсказку.
Это работает, если n
гарантированно больше нуля (как было фактически обещано в постановке задачи):
def required_steps(n):
if n == 1: # changed because we need one less going down
return 1
return 1 + 2 * required_steps(n-1)
Более надежная версия будет обрабатывать также нулевые и отрицательные значения:
def required_steps(n):
if n < 0:
raise ValueError("n must be non-negative")
if n == 0:
return 0
return 1 + 2 * required_steps(n-1)
(Добавление проверки на нецелые числа оставлено в качестве упражнения.)