
かしこく計算。 - アルゴリズムでいこう!
ちょっと考えてより簡単にできるようにする。大事なことです。時間短縮できるし、単純化することでより理解が深まるように思います。
そこで有名なガウスが少年時代に考えた言われる計算方法を考えます。
1 から10まで足していきます。
まずは単純に
1 + 2 + 3・・・10
足していく方法。誰もが最初にすることと思います。Swiftで計算していきます。
for文で足し算 ・・・ 単純に頭から足していく。
var sum = 0
for i in 1...10{
sum += i
}
print(sum)
そしてガウスが考えた法則性を使った計算。
1から10まで足していく場合
1+10 = 11
2+9 = 11
・
・
10 + 1 = 11
全て"11"になります。となると合計は
11 * 10 = 110
この計算は2倍となっているので最後に"2"で割ってやることで結果が得られます。この場合は"55"となります。
ガウスが考えた計算 ・・・ 法則性を見つけ、利用して計算
var sum2 = 0
sum2 = (10+1)*10/2
print(sum2)
どちらも計算できますが単純に最初から足していく方法は一見して簡単そうに見えますが計算量としてはおおきくなります。ガウスの等差数列の方は数が多くなっても法則性に乗っとて計算するので計算量としては明らかに少なくすることができます。
アルゴリズム。計算方法を工夫することで単純化、計算量を減らすことができます。