算法既然不止一種,就有必要對算法進行優化。
【例25.2】優化打印9*9乘法表的例子。
#include <stdio.h> int main () { int i=0 , j=0 ; for (i=1 ; i<10 ; ++i ) { for (j=1 ; j<10 ; ++j ) { if (j<i ) printf ("%d*%d=%d\t" , j , i ,i*j ); } printf ("\n" ); } printf ("\n" ); return 0 ; }
輸出乘法表如下。
1*2=2 1*3=3 2*3=6 1*4=4 2*4=8 3*4=12 1*5=5 2*5=10 3*5=15 4*5=20 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72
第2個for循環語句可以優化,它既要判別j<=10,又要判別j<=i,增加了循環次數。可以取消if語句,修改for循環語句的條件為「j<=i」即第2個循環語句簡化為:
for (j=1 ; j<=i ; ++j ) printf ("%d*%d=%d\t" , j , i ,i*j );
即可。一個程序寫完後,要對程序進行研究,看看有無可以優化的地方,盡量在現有的基礎上予以優化。