回答編集履歴
1
さらに簡易化するように追記
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
|
```
|