Python递归Fibonacci“树”输出

2024-04-23 16:06:32 发布

您现在位置:Python中文网/ 问答频道 /正文

总结:坦率地说,这是一个家庭作业,但我已经完成了作业最初对我的要求。在这一点上,我正在挑战自己,在程序中构建额外的功能。当给定[n]个数时,我想建立一个可视化的Fibonacci“树”。你知道吗

例如:

用户输入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) + "]")

我的尝试/想法:我尝试将分支对象show output写入一个文件,而不是在那里对其进行操作,但是它变得非常折衷和紧凑,我不确定这样做是否现实。我曾经想过使用海龟模块,就像我之前提到的,也许在某种程度上?我也尝试过链表(node类)的概念,但是用一个节点的多个关联来构建一棵树?寻找一些信息。你知道吗

我的问题:我已经有了一个可以运行的递归Fibonacci程序,但我的问题是如何打印出n个数的Fibonacci序列输出的可视化表示。我基本上是想输出我的ASCII Fibonacci树,我在上面给出了一个例子。你知道吗


Tags: self程序可视化例子fibonacciparentprintfib