teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

さらに簡易化するように追記

2020/06/15 10:49

投稿

yymmt
yymmt

スコア1615

answer CHANGED
@@ -28,7 +28,7 @@
28
28
  return acc
29
29
  print(sumS(10))
30
30
  ```
31
- さらに上のソースコードをよく見ると、和を計算する箇所はT[n]しか使っていませんので、T[n-1]を覚えておく必要はないことに気がつきます。上書きして捨て良ければ変数に置き換えることができます。
31
+ さらに上のソースコードをよく見ると、和を計算する箇所はT[n]しか使っていませんので、T[n-1]を覚えておく必要はないことに気がつきます。上書きして捨て良ければ変数に置き換えることができます。
32
32
  ```
33
33
  def sumS(nmax):
34
34
  T = 2
@@ -40,4 +40,15 @@
40
40
  acc += T
41
41
  return acc
42
42
  print(sumS(10))
43
+ ```
44
+ さらに上のソースコードでは n を使っていないことが分かります。2からnmaxまで繰り返していますが、 n を使っていないので0から(nmax-2)でも構いません。とにかくループ回数をnmax-1回にすれば良いことが分かります。したがってさらに簡易化できます。
45
+ ```
46
+ def sumS(nmax):
47
+ T = 2
48
+ acc = T
49
+ for _ in range(nmax - 1):
50
+ T = 3 * T - 1
51
+ acc += T
52
+ return acc
53
+ print(sumS(10))
43
54
  ```