讀古今文學網 > C語言解惑 > 25.1 計算機解題具有多解的特點 >

25.1 計算機解題具有多解的特點

即使是比較簡單的問題,計算機的解題方法也不是惟一的。下面就舉一個簡單的例子,說明求解問題可以使用不同算法。

【例25.1】給出幾個求1至100的奇數和的程序。

【解法一】剔除偶數法。


#include <stdio.h>
int main
()
{
    int i=0
, sum=0
;
    for
(i=1
; i<=100
; ++i
)
    {
          if 
(i %2 == 0
)          //
剔除偶數
                continue
;
          sum += i
;
    }
    printf
("sum=%d\n"
, sum
);     //
輸出2500
    return 0
;
}
  

【解法二】改變步長法。


#include <stdio.h>
int main
()
{
     int i=0
, sum=0
;
     for
(i=1
; i<=100
; i += 2
)     //
步長為2
           sum += i
;
     printf
("sum=%d\n"
, sum
);     //
輸出2500
     return 0
;
}
  

【解法三】奇數相加法。


#include <stdio.h>
int main
()
{
    int i=0
, sum=0
;
    for
(i=1
; i<=100
; ++i
)
          if 
(i %2 == 1
)          //
奇數相加
                 sum += i
;
    printf
("sum=%d\n"
, sum
);     //
輸出2500
    return 0
;
}
  

這個問題簡單,效率也不明顯。但對大量運算的情況,就要選擇合適的算法。這個例子的目的是提醒程序員解題的算法可能很多,要注意選擇合適的算法。