摘要:坦率地说,这是一项家庭作业,但是我已经完成了作业最初要求我的工作。在这一点上,我正在挑战自己,以在程序中构建其他功能。我想在给出[n]编号时构建 visual 斐波那契“树”。
例如:
用户输入n的6,给出结果8,但是一棵树也被打印到控制台或使用Turtle可视化。 (见图1)
到目前为止,我已经创建了一个以parent(n),child1(n-1)和child2(n-2)为参数的类,以及一些笨拙的代码,以将它们输出为基本三角形的方式输出,这些三角形按组打印of3。不过,我还没有想像下面的示例那样制作视觉效果。
图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输出写入文件而不是在此处进行操作,但是它折衷和紧凑,以至于我我不确定这样做是否现实。我已经考虑过使用Turtle模块,就像我之前提到的那样,也许是以某种方式?我也玩过链表(节点类)的想法,但是与节点的多个关联来构建树?寻找一些输入。
我的问题:我已经有一个有效的递归Fibonacci程序,但是我的问题是我将如何打印n个数字的Fibonacci序列输出的可视表示。我基本上是想输出上面作为示例给出的ASCII斐波那契树。