|
りん さん、タケ さん
おはようございます。
懐かしい問題だったので投稿します。
2x年前、ソフト会社に入社して一週間後のテストに↓この問題がありました。
>>・1+2+3+4・・・+100
>>・1の二乗+2の二乗+3二乗+・・・20の二乗
>>・1の三乗+2の三乗+3の三乗+・・・20の三乗
>>という各数値の和を繰り返し文を使用して算出したいのですがどうしたらいいのでしょうか?
但し、「繰り返し文を使用して」の規制はありませんでした。
当時、この3例の総和の公式を丸暗記していた私は、自信たっぷりに
'=================================================================
Sub test2()
Dim i As Long
i = 20
MsgBox Format(i * (i + 1) / 2, "#,##0"), vbInformation, "そのまま加算"
MsgBox Format(i * (i + 1) * (2 * i + 1) / 6, "#,##0"), vbInformation, "2乗して加算"
MsgBox Format((i * (i + 1) / 2) ^ 2, "#,##0"), vbInformation, "3乗して加算"
End Sub
と記述しました(答案は、VBAではなく、当時研修言語だったFORTRANですが)。
テストの結果は、△でした。
納得できない私は、「何故だあ?」と講師に詰め寄りました。
講師がなんと言ったかは忘れましたが、納得できずにいた事だけは
覚えています。
正解(この試験の意図)は、りんさんの↓でした。
>Sub test()
> Dim II As Long
> Dim dt1 As Long, dt2 As Long, dt3 As Long
> '
> For II = 1 To 20
> dt1 = dt1 + II
> dt2 = dt2 + II ^ 2 '2乗
> dt3 = dt3 + II ^ 3 '3乗
> Next
> '結果
> MsgBox Format(dt1, "#,##0"), vbInformation, "そのまま加算"
> MsgBox Format(dt2, "#,##0"), vbInformation, "2乗して加算"
> MsgBox Format(dt3, "#,##0"), vbInformation, "3乗して加算"
>End Sub
今、「何故だあ?」と詰め寄られたら、さて、なんて答えよう???
|
|