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