そこで、フィボナッチ数列の最初の N 項を出力するアルゴリズムのフローチャートを作成する宿題があります。確かに難しいことではありませんが、先生は、これはわずか 6 つのフローチャートの「バルーン」で実行できると教えてくれました。そして、ここに問題があります-私はこのようにしたかったのですが、できなかったようです...つまり、最短の方法は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 しか得られないと推測する傾向がありますが、そうではない可能性があります。助けていただけますか?
編集: OK、私はそれを 8 ボックスに微調整しました。このようなもの:
- 入力 N
- 年長者 = 0、年少者 = 1 (それぞれ、シリーズの (n-2) 番目と (n-1) 番目の項)、現在 = 1、i = 2 とします。
- N<=1 ですか?
- はい: 古いものを出力し、終了します。
- いいえ: 4 に進みます
- 年上、年下を出力します。
- i < N?
- はい: 現在 = 年上 + 年下、年上 = 年下、年下 = 現在、i+=1。現在の印刷、5 に進みます。
- 終わりがない。
ここでさらに何か微調整できますか?