- 812 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 00:08:22.57 ID:EyWhNnq2.net]
- >777
772のコードは以下のと同じようなことをしているはず。 1, 4, 7, 10 の積を求めている。 ans = 1 for a in range(1, 11, 3): ____ans *= a print(ans) あるいは、reduce 使うなら、 from functools import reduce from operator import mul ans = reduce(mul, range(1, 11, 3)) print(ans) 772では、リストの要素を1つずつ取り出しながら再帰的に処理しているのだけど、 a[1:]っていう部分がO(1)でなくO(n)かかるから、 全体の計算量がO(n^2)になってしまって、 ループ処理がO(n)で済むのと比べると、計算量的にも不利。 長さが10,000くらいのリストを処理すると、速度差が体感出来るようになるはず。
|

|