回答編集履歴
1
さらに簡易化するように追記
test
CHANGED
@@ -58,7 +58,7 @@
|
|
58
58
|
|
59
59
|
```
|
60
60
|
|
61
|
-
さらに上のソースコードをよく見ると、和を計算する箇所はT[n]しか使っていませんので、T[n-1]を覚えておく必要はないことに気がつきます。上書きして捨て良ければ変数に置き換えることができます。
|
61
|
+
さらに上のソースコードをよく見ると、和を計算する箇所はT[n]しか使っていませんので、T[n-1]を覚えておく必要はないことに気がつきます。上書きして捨てて良ければ変数に置き換えることができます。
|
62
62
|
|
63
63
|
```
|
64
64
|
|
@@ -83,3 +83,25 @@
|
|
83
83
|
print(sumS(10))
|
84
84
|
|
85
85
|
```
|
86
|
+
|
87
|
+
さらに上のソースコードでは n を使っていないことが分かります。2からnmaxまで繰り返していますが、 n を使っていないので0から(nmax-2)でも構いません。とにかくループ回数をnmax-1回にすれば良いことが分かります。したがってさらに簡易化できます。
|
88
|
+
|
89
|
+
```
|
90
|
+
|
91
|
+
def sumS(nmax):
|
92
|
+
|
93
|
+
T = 2
|
94
|
+
|
95
|
+
acc = T
|
96
|
+
|
97
|
+
for _ in range(nmax - 1):
|
98
|
+
|
99
|
+
T = 3 * T - 1
|
100
|
+
|
101
|
+
acc += T
|
102
|
+
|
103
|
+
return acc
|
104
|
+
|
105
|
+
print(sumS(10))
|
106
|
+
|
107
|
+
```
|