即使是比較簡單的問題,計算機的解題方法也不是惟一的。下面就舉一個簡單的例子,說明求解問題可以使用不同算法。
【例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 ; }
這個問題簡單,效率也不明顯。但對大量運算的情況,就要選擇合適的算法。這個例子的目的是提醒程序員解題的算法可能很多,要注意選擇合適的算法。