#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)
Комментариев нет:
Отправить комментарий