Python Рекурсивный Фибоначчи "Дерево" Выход - PullRequest
0 голосов
/ 01 ноября 2019

Резюме: Честно говоря, это домашнее задание, но я уже выполнил то, что первоначально требовалось от меня. На данный момент я ставлю перед собой задачу встроить в программу дополнительные функции. Я хочу построить визуальное"дерево" Фибоначчи, когда дается число [n].

Например:

Пользовательский ввод 6 для n, результат 8 дается, но дерево также выводится на консоль или, возможно, визуализируется с помощью Turtle. (см. рисунок 1)

До сих пор я создал класс, который принимает parent (n), child1 (n-1) и child2 (n-2) в качестве параметров, и некоторый неуклюжий код для их выводапо существу в треугольниках, которые распечатываются в группы по 3. Однако я не собираюсь делать визуал, похожий на приведенный ниже пример.

рисунок 1)

                                           fib(6)
                                          /      \
                                         /        \
                           fib(4) - - fib(5)   fib(4) - - fib(3)
                         /      |       |         |       |     \
                        /       |       |         |       |      \
          fib(2) - - fib(3)  fib(2)   fib(3)   fib(2)   fib(1)   fib(2) - - 1
           |          |     |        /    \        |      |       
           |          |     |       /      \       |      |
           1      fib(1)    1    fib(2)   fib(1)   1      1
                 /              /               \
                /              /                 \
               1              1                   1


def __init__(self, child1, child2, parent):
    self.firstchild = child1
    self.secondchild = child2
    self.parent = parent

def show(self):
    if self.firstchild == 1 and self.secondchild == 0:
        print("            [fib" + str(self.parent) + "]")
        print("           /      \\")
        print("          /        \\")
        print("        [" + str(self.secondchild) + "]        [" + str(self.firstchild) + "] <-- End of branch")

    else:

        print("            [fib" + str(self.parent) + "]")
        print("           /      \\")
        print("          /        \\")
        print("      [fib" + str(self.secondchild) + "]      [fib" + str(self.firstchild) + "]")

Что я пробовал / думал: Я попытался записать выходные данные объекта ветвления в файл вместо того, чтобы манипулировать им там, но он становится настолько эклектичным и узким, что я не уверен, реалистично ли этосделать это таким образом. Я думал об использовании модуля Turtle, как я уже упоминал ранее, может быть, каким-то образом? Я также поиграл с идеей связанных списков (класс узла), но с несколькими ассоциациями с узлом, чтобы построить дерево? Ищем какой-нибудь ввод.

Мой вопрос: У меня уже есть работающая рекурсивная программа Фибоначчи, но мой вопрос заключается в том, как мне распечатать визуальное представление вывода Фибоначчи? последовательность для n числа. Я в основном хочу вывести свое ASCII-дерево Фибоначчи, которое я привел в качестве примера выше.

...