2016-02-17 3 views
-1

У меня есть простая часть кода для рекурсивной печати шаблона в Python, однако при печати код возвращает NoneType.Возвращение рекурсивного шаблона NoneType

Вот что у меня есть.

def pattern(n): 
    if n <= 0: 
     return '' 
    print ('*' + str(pattern(n-1)) + '!', end='') 

Мой ожидается выход

**!!

Однако, этот код работает с обратным утверждением вместо печати. Проблема в том, что мне не нужны кавычки.

+4

Где находится рекурсия? – muratgu

+0

Возможный дубликат [Почему моя рекурсивная функция возвращает None?] (Http://stackoverflow.com/questions/3719853/why-does-my-recursive-function-return-none) – Prune

ответ

1

Обычно вы получите возвращаемое значение, которое вы хотите вернуть, а затем распечатать вне своей функции. например:

def pattern(n): 
    if n <= 0: 
     return '' 
    return '*' + str(pattern(n-1)) + '!' 

print(pattern(2)) 
+0

Таким образом, невозможно получить ожидаемое печать результатов внутри функции? Мне любопытно, почему использование оператора печати делает рекурсию возвратой NoneType. – 23k

+0

@ 23k - поскольку функция не имеет оператора 'return' по этому пути. Если python не видит оператор 'return', он возвращает' None' по умолчанию. Если вы действительно захотите, вы должны «напечатать» и «вернуться». , , – mgilson

+0

Имеет смысл, спасибо за помощь! – 23k

Смежные вопросы