//**********************
for(i = 1;i <= n; i++){
for(j = 1;j <= n;j++){
x = 0;
for(k = 1;k <= n;k++)
x += a[i][k] * b[k][j];
c[i][j] = x;
}
}
//**********************
首先来看看以上代码片段
分析:
首先看看语句1,是最外层循环,当看到循环结束条件是个n的时候,很兴奋的断定 :1的语句频度为n。然而高兴的太早,忽略了n前面的那个等号,条件为小于等于n的时候,当i为n+1才会终止语句1,故语句1的频度为 n+1;
再看语句2:
语句2是一个嵌套循环,相信大家都能很快的想到,它的频度应该两个数相乘的形式;在这里,应该理解到,执行语句2的条件,i最大为n,当i为n+1的时候,不会执行语句2,因此可以确定两个数中有一个n,同时和语句1相似,语句2本身会执行n+1次,最后一次是判断,所以语句2的频度为 n*(n+1)
语句3:
在执行这条语时,i和j最大都只能是n,所以3的频度为 n*n
语句4:
这又是一层循环,循环结束条件有等号,所以其本省会执行n+1次,因为嵌套两层的缘故,其频度为 n*n*(n+1)
语句5:
最内层循环的语句,没有异议,频度是n*n*n
语句6:
这里要注意不是在最内层循环(C语言花括号的用法),所以和语句3是一样的,频度为n*n
分享到这,有不对的望大家指正