计算以下C代码中每个语句的频率计数

5cnsuln7  于 2022-12-29  发布在  其他
关注(0)|答案(4)|浏览(123)

在下面的C代码中,我如何计算每条语句的频率计数(即每条语句被读取/执行的次数)?
每条语句的频率计数必须用“n”表示。

for(i=1;i<=n;i++)  
     for(j=1;j<=i;j++)  
          for(k=1;k<=j;k++)
                x=x+1;
hc8w905p

hc8w905p1#

从这个Angular 看,最多,

for(i=1;i<=n;i++)  // Executes n times
     for(j=1;j<=i;j++)  // Executes i times for every i -> (1 + 2 + 3 + 4....n)
          for(k=1;k<=j;k++) // Executes j times for every i,j ---> (1+(1+2)+(1+2+3).....(1+2+3...n)) 
                x=x+1; // Executes every time for every i,j,k ---> (1+(1+2)+.....(1+2+3...n)

 So, you can figure out from this that :

n + n*(n+1)/2 + (n+(n-1)2+(n-2)3.....(1)n)*2 ... = n + n(n+1)/2+ ((n)(n+1)(n+2)/6)*2这就是你的答案。

niknxzdl

niknxzdl2#

  • 第一个for循环执行n次。
  • 第二个for循环执行:1 + 2 + 3 +..... +n = n(n+1)/2
  • 第三个for循环执行:∑ j(j+1)/2,其中j = 1到n,即1 + 3 + 6 + 10 +..+ n(n+1)/2。这称为三角序列,其和为n(n+1)(n+2)/6。
cvxl0en2

cvxl0en23#

首先看看

for(i=1;i<=n;i++)  
    for(j=1;j<=i;j++)
         expression;

它会像这样:

for(i=1;i<=n;i++)  
    // i=1, 2, ..., n Total = n
    for(j=1;j<=i;j++)
         expression;
        // i=1 -> j=1             Total = 1
        // i=2 -> j=1, 2          Total = 2
        // ...
        // i=n -> j=1, 2, ..., n  Total = n

因此expression执行了1+2+...+n次,即(n+1)*n/2
现在,您可以计算单个表达式的频率。

i=1;  // 1
i<=n; // n+1
i++;  // n
j=1;  // n
j<i;  // ((n+2)*(n+1)/2) - 1   (2+3+...+(n+1))
j++;  // (n+1)*n/2

使用相同的方法,您可以添加for(k=1;k<=j;k++)并重新计算频率。

snz8szmq

snz8szmq4#

// here for loop code statement will excute for n times
// but when condition is false then also loop run to check
// for condition so hence for loop runs for (n+1) times.

for(i=1;i<=n;i++)         // --------> (n + 1) 

    for(j=1;j<=i;j++)     // --------> (n * (n + 1))

        for(k=1;k<=j;k++) // --------> (n * n * (n + 1)) 

            x=x+1;        // --------> (n * n * n)

// total Frequency Count is :  
//(n + 1) + (n * (n + 1)) + (n * n * (n + 1)) + (n * n * n)

相关问题