在6个流程图“气球”中调整斐波那契?

时间:2012-10-14 10:37:34

标签: algorithm flowchart

所以我有一个功课来制作算法的流程图,首先打印出Fibonacci序列的N个项。这并不难,当然,老师告诉我们这可以在六个流程图“气球”中完成。这就是问题 - 我想这样做但我似乎无法......但是,我认为最短的方法是检查N> 2 - 如果不是,我们必须检查是否它是1或2并分别打印0或1。只有在那之后我们才能使用“常规”F(n)= F(n-1)+ F(n-2)公式 - 否则,它会崩溃。写得更正式:

  1. 输入N
  2. N'→2?
    • 否:检查是否为1.如果是,请打印0并停止。
    • 否:检查是否为2.如果是,请打印0和1然后停止。
    • 是:继续3
  3. 让我= 3。虽然我< N:fib(i)= fib(i-1)+ fib(i-2)和print fib(i)。
  4. 停止。
  5. 问题是,我想如果不是更多,我需要大约10个盒子。那么什么可能是更短的方式?我在网上找到的所有算法都倾向于假设我们只得到N超过2,这可能不是这种情况。你能帮忙吗?

    编辑:好的,我把它调整到了8个盒子,并且认为它只有一个可以去。像这样:

    1. 输入N
    2. 让年龄= 0,年龄= 1(分别为:系列的第(n-2)和第(n-1)项),current = 1,i = 2.
    3. N <= 1?
      • 是:输出旧,结束。
      • 否:继续4
    4. 输出较旧,较年轻。
    5. i&lt; N +
      • 是:当前=年龄较大+较年轻,年龄较大=年轻,较年轻=当前,i + = 1。打印当前,转到5。
      • 不:结束。
    6. 可以在这里进一步调整某些内容吗?

1 个答案:

答案 0 :(得分:2)

  1. 输入 N
  2. 设( x1 x2 )=(0,1)
  3. N ≤0?
    • 是:停止
    • 否:继续执行第4步
  4. 打印 x1
  5. 设( x1 x2 N )=( x2 x1 + x2 N - 1),然后继续执行第3步。
  6. 如果“停止”需要成为自己的步骤,那将进行第6步。