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