/ / Star Pattern Recursion Python - python, récursivité

Star Pattern Recursion Python - python, récursivité

Je vais écrire une fonction récursive printPattern () cela produira un motif dans les étoiles. le premier argument est toujours une puissance de 2 et est le nombre maximum d'étoiles apparaissant dans la rangée du milieu. Le deuxième argument (dont la valeur par défaut est 0) correspond au nombre d'espaces à placer avant chaque motif de rangées d'étoiles.

un exemple de sortie est:

>>> printPattern(8,0)
*
**
*
****
*
**
*
********
*
**
*
****
*
**
*

J'ai ce code d'un problème précédent qui est similaire à ce que cela demande.

def patt(n,s=0):
if n==1:
print("*")
else:
patt(n-1)
print("*"*n)
patt(n-1)

Je ne sais pas trop comment le changer pour qu'il imprime seulement des puissances de 2.

Réponses:

1 pour la réponse № 1

Au lieu d'en soustraire un, divisez-le par deux.

def patt(n,s=0):
if n==1:
print(" "*s,"*", sep="")
else:
patt(n//2, s)
print(" "*s, "*"*n, sep="")
patt(n//2, s + n//2)

Pour les espaces, nous commençons sans indentation et ajoutons une indentation correspondant à la moitié du nombre actuel pour la deuxième récurrence. De cette façon, le motif que vous avez montré dans la sortie souhaitée apparaîtra.


0 pour la réponse № 2

Je pense que cela devrait fonctionner:

def patt(n,s=0):
if(n>0):
patt(n//2,s)
print(" "*s + "*"*n)
patt(n//2,s+n//2)