所以我有一个作业来制作一个打印斐波那契数列前 N 项的算法流程图。当然,这并不难,但是老师告诉我们这可以在短短六个流程图“气球”中完成。这就是问题所在 - 我想这样做,但我似乎无法......也就是说,我认为最短的方法是检查 N>2 - 如果不是,我们必须检查是否它是 1 或 2 并分别打印 0 或 1。只有在那之后,我们才能使用“常规” F(n)=F(n-1)+F(n-2) 公式——否则,它会崩溃。写得更正式:
- 输入 N
- N>2?
- 否:检查是否为 1。如果是,则打印 0 并停止。
- 否:检查是否为 2。如果是,则打印 0 和 1 并停止。
- 是:继续 3
- 令 i = 3。当 i < N 时:fib(i)=fib(i-1)+fib(i-2) 并打印 fib(i)。
- 停止。
问题是,我想这需要大约 10 个盒子才能完成,如果不是更多的话。那么,更短的方法是什么?我在网上找到的所有算法都倾向于假设我们只会得到大于 2 的 N,但情况可能并非如此。能否请你帮忙?
编辑:好的,我将它调整为 8 个盒子,并认为它是一个可以去的最小的盒子。像这样的东西:
- 输入 N
- 令older=0,younger=1(分别为:序列的第(n-2)项和第(n-1)项),current=1,i=2。
- N<=1?
- 是:输出较旧,结束。
- 否:继续 4
- 输出更老,更年轻。
- 我 < N?
- 是:当前 = 年长 + 年幼,年长 = 更年轻,更年轻 = 当前,i+=1。打印当前,执行5。
- 没有结束。
这里可以进一步调整吗?