Загадка оптимизации
Какой ответ (лобовой – 25 007 600 или хитрый – 24 999 750) правильный, сказать трудно. Автор не стал отыскивать оптимизационный алгоритм или расчетную формулу, а составил BASIC-программу и использовал ее в качестве «третейского судьи» (см. рис. 7.16). Ее запуск выдал на дисплей второе число (24 999 750), что свидетельствует в пользу «второго зайца» – оптимизация не только ускоряет расчеты, но и делает их более точными даже при работе с целыми числами. Математики, к которым автор обратился как к высшим судьям, подтвердили правильность расчетной формулы и дефектность прямого счета. Дело, по-видимому, в том, что на языке C (а на нем писался и Mathcad и Maple V) очень просто запутаться в циклах с пересекающимися параметрами, если при этом нужно оптимизировать еще и саму программу.
Dim n As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim S As Long
n = 100
S = 0
For i = 1 To n
For j = 1 To n - i
For k = 1 To n
S = S + k
Next
Next
Next
Print “Ответ:”; S
Запуск программы
Ответ: 24 997 500