Python STAR & HA SH НЕЧЕТНЫЙ АЛМАЗНЫЙ отпечаток с рекурсией - PullRequest
0 голосов
/ 27 мая 2020

Я хочу сделать узор, как показано ниже:

Я пишу эту программу, которая приведена ниже. Но я не мог принимать нечетные числа. Может ли кто-нибудь объяснить, в чем ошибка и какое решение? Спасибо.

*

def printPartten(n, k): 

    if (n < 0): # Base condition 
        return; 
    # Recursive call 
    printPartten(n - 1, k + 1);  
    for i in range(0, k): # it makes spaces 
        print(" ", end=""); 
    for i in range(0, n): # for print * 
        print("* ", end = ""); 
    print("\n", end=""); # for next line 
   def printPatternReverse(n, k): 
    if (n < 0): # Base condition 
        return; 
    for i in range(0, k): # it makes spaces 
        print(" ", end = "") 
    for i in range(0, n): # for print * 
        print("#", end = " ") 
    print("\n", end = "") # for next line 
    # Recursive calls 
    printPatternReverse(n - 1, k + 1);

# Call to printPartten function 
n = int(input("Please enter the desire value for N:  "))
printPartten(n, 0);
print("\n",end="")
printPatternReverse(n,0)
print("Thank You!!!")

*

Мой результат выглядит так:

1 Ответ

0 голосов
/ 27 мая 2020

Ваш пример показывает, что он пропускает четные строки, поэтому вы можете добавить проверку на наличие четных строк, используя модуль:

if (k % 2 == 0):

Применяется к вашему коду:

def printPartten(n, k):
    if (n < 0): # Base condition 
        return;
    # Recursive call
    printPartten(n - 1, k + 1); 
    if (k % 2 == 0):
        for i in range(0, k): # it makes spaces 
            print(" ", end=""); 
        for i in range(0, n): # for print * 
            print("* ", end = "");
        if (k > 0):
            print("\n", end=""); # for next line 
def printPatternReverse(n, k):
    if (n < 0): # Base condition 
        return; 
    if (k % 2 == 0):
        for i in range(0, k): # it makes spaces 
            print(" ", end = "") 
        for i in range(0, n): # for print * 
            print("#", end = " ")
        print("\n", end=""); # for next line 
    # Recursive calls 
    printPatternReverse(n - 1, k + 1);

# Call to printPartten function 
n = int(input("Please enter the desire value for N:  "))
printPartten(n, 0);
print("\n",end="")
printPatternReverse(n,0)
print("Thank You!!!")

Вывод :

Please enter the desire value for N:  9
        * 
      * * * 
    * * * * * 
  * * * * * * * 
* * * * * * * * * 
# # # # # # # # # 
  # # # # # # # 
    # # # # # 
      # # # 
        # 
Thank You!!!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...