2
a = 0
b = 1
print a
print b
for i in range (102):
    c = a + b
    a = b
    b = c
    print c

print "The 103rd number is", c

for文の仕組みがわかりません。プログラムが 103 番目の要素までどのように続くかを除いてすべてを理解しており、次の数を取得するには最後の 2 つの数を追加する必要があることを理解しています。a は b に等しく、b は c に等しいことを理解しています。

cを追加した後、aとbの値を変更してからforステートメントに戻るためですか?そして、それが私が混乱しているところです。プログラムは次に何をしますか?

forステートメントに戻って、これが102未満であることを確認するために、これがどの(用語)/要素かを確認しますか。

また、範囲を 102 に指定すると、アクションが 1 回実行されてから、基本的に 102 回以上、数値が 103 回リストされます) または 102 回実行されますか?

私が基本的に求めているのは、103番目の要素を見つける必要があるかどうかです。なぜrange = 103ではなく、range = 102を指定するのですか

4

7 に答える 7

2

F0=0、F1=1、F2=1、F3=2、F4=3 ...

for i in range (102):
    c = a + b
    a = b
    b = c
    print c

最初のループ c=a+b=0+1=F0+F1=F2 では、出力する結果は F1 ではなく F2 になることに注意してください。したがって、F103 は 102 番目のループで出力されます。

于 2013-09-27T01:42:59.137 に答える
1

このステートメントには無限の用途がありforます。あなたの場合、102回、その中のすべてを実行するだけです。したがって、あなたの特定のケースでは、forステートメントは...

c = a + b
a = b
b = c
print c

c = a + b
a = b
b = c
print c

c = a + b
a = b
b = c
print c

# ... (99 more times)

そしてそれが完了すると、プログラムは で終了しprint "The 103rd number is", cます。これで何が起こっているかがわかります。

于 2013-09-27T01:23:27.480 に答える
1

range整数のリストを返す関数です。単一の引数を指定すると、n0 から までのすべての整数が得られますn-1

形式のステートメントfor x in y: <do something>where yis iterable は、 内のすべての要素を反復処理しyます。そのような要素ごとに、変数をzにバインドし、ループの本体を 1 回実行します。xz

したがって、この行for i in range(102)は、0 から 101 までの整数ごとにループ内のすべてを実行します。注: 実際にはiループ内の変数を参照していないため、for _ in range(102).

ループ内のブロックに関しては、大まかに次のようになります。

  • cの合計に等しく設定ab
  • aの値に設定b
  • bの値に設定c

したがって、反復するたびに、次の数値を見つけて に保存し、状態変数とcを更新します。 最後の 2 つのフィボナッチ数を保持します。abab

本当に 103 番目のフィボナッチ数が必要な場合は、プログラムにバグがあります。わかりますか?

于 2013-09-27T01:24:24.797 に答える
0

この行は、102 回インデントされているその下のすべてを繰り返します。

for i in range(102):
于 2013-09-27T01:25:35.697 に答える
0

フィボナッチの公式は:</p>

f(n) = f(n-1) + f(n-2); (n > 1, n is integer)
f(0) = 0
f(1) = 1

範囲(102) = [0, 1, 2, ..., 101]

for i in range (102):つまり、for ループは 102 回実行されます

c = a + b
a = b
b = c

b は f(n-1) を表し、a は f(n-2) を表すため、c は f(n) を表します。ループは 2 番目の要素から開始されるため、for ループは 103 番目の要素を取得するために 102 回実行されます。

于 2013-09-27T01:57:08.880 に答える