Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Создание ascii-art при помощи рекурсии

#python #рекурсия


Необходимо написать рекурсивную функцию, которая выводит на экран ASCII-art трапецию
следующего вида, в зависимости от числа n. Пример приведен для n = 4.

Теперь суть вопроса: по какой логике должна работать подобная рекурсивная функция?
У меня была мысль печатать определенно кол-во пробелов и звездочек, и передавать измененный
аргумент дальше по рекурсии, но что должно являться условием выхода из рекурсии, и
какое кол-во пробелов ставить я не знаю. 

       * * 
     * * * * 
   * * * * * * 
 * * * * * * * * 

    


Ответы

Ответ 1



def draw(n, indent=0): if n == 0: return draw(n-1, indent+1) print("{}{}".format(' ' * 2 * indent, ' '.join('*' * 2 * n)))

Ответ 2



Если совсем примитивно, то у Вас трапеция состоит из двух равносторонних треугольников, стороны которых соответствуют n: >>> def f(n): ... e = 0 ... for i in range(n): ... e += 1 ... print(' '*(n-e) + ' * *'*e + ' '*(n-e)) ... >>> f(4) * * * * * * * * * * * * * * * * * * * *

Ответ 3



Попытка в хвостовую рекурсию: def draw(n, i=0): width = 2 * (i + n) stars_count = 2 * i + 2 indent = (width - stars_count) // 2 print(' ' * indent + ' *' * stars_count) if n <= 1: return draw(n - 1, i + 1)

Комментариев нет:

Отправить комментарий