即使是比较简单的问题,计算机的解题方法也不是惟一的。下面就举一个简单的例子,说明求解问题可以使用不同算法。
【例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 ; }
这个问题简单,效率也不明显。但对大量运算的情况,就要选择合适的算法。这个例子的目的是提醒程序员解题的算法可能很多,要注意选择合适的算法。