создать рекурсивную силу 2 '*' в python

В pyschools я застрял во власти 2-х рекурсивных функций

     >>> createStars (0) # 2 до степени 0 = 1
     '*'
     >>> createStars (1) # 2 до степени 1 = 2
     '**'
     >>> createStars (2) # 2 до степени 2 = 4
     '****'
     >>> createStars (3) # 2 до степени 3 = 8
     '********'

Я пытаюсь сделать следующее:

 def createStars (x):
     если x == 0:
         вернуть '*'
     еще:
         return '*' * x + createStars (x-1) 

Однако это, по-видимому, суммирование «x» не имеет значения 2. Значение, это сломается, когда x будет выше, чем 2

Я знаю, как сделать 2 рекурсивно, но не знаю, где изменить работу createStars ().

 def power (x, n):
     если n == 0:
         возвращение 1
     еще:
         return x * power (x, n-1)

PS. Я знаю, что легко использовать нерекурсивный метод для его решения. Но хотел бы обратиться за советом, как это сделать рекурсивным образом.

Благодарю.

def createStars(x): if x == 0: return '*' else: return createStars(x-1) * 2 

(Каждый шаг назад в рекурсии удваивает количество звезд в выходной строке).

Вы очень близко!

Я бы предложил сравнить два фрагмента кода, который вы нам дали. (Я собираюсь переименовать его немного, чтобы сделать аналогию более понятной):

 def createStars(n): if n == 0: return '*' else: return '*' * n + createStars(n-1) def power(x, n): if n == 0: return 1 else: return x * power(x, n-1) 

Они имеют почти ту же структуру. В частности, последняя строка каждой из них имеет немного другую структуру.

В (рабочей) мощности вы умножаете результат на n-1 на x . Итак, при вычислении мощности (2, 6) вы увеличиваете мощность (2, 5) на 2. (т. Е. Вы умножаете 32 на 2, чтобы получить 64).

В (not working) createStars вы не умножаете результат для случая n-1 ничем; вы просто добавляете материал к началу. Что, если вы измените его, чтобы совместить структуры?

Кроме того, вы должны проверить, что результат для createStars(1) .