统计循环次数

题目描述

for(int i = 1; i < n; i++) {
  for(int j = 1; j < i; j++) {
    for(int k = 1; k < j; k++) {
      cout << "Hello World ";
    }
  }
}

上述循环一共执行了多少次”Hello World “语句?

不妨假设 a [ n , 3 ] 为循环层数为3,输入值为 n 时的语句执行次数,则有
a [ n , 3 ] = a [ n 1 , 2 ] + a [ n 2 , 2 ] + a [ n 3 , 2 ] + + a [ 4 , 2 ] + a [ 3 , 2 ]
  = a [ n 2 , 1 ] + a [ n 3 , 1 ] + + a [ 2 , 1 ]
  + a [ n 3 , 1 ] + + a [ 2 , 1 ]
  +
  + a [ 2 , 1 ]
  = a [ n 2 , 1 ] + 2 a [ n 3 , 1 ] + + ( n 4 ) a [ 3 , 1 ] + ( n 3 ) a [ 2 , 1 ]
又因为

a [ m , 1 ] = m 1

所以有 a [ n , 3 ] = ( n 3 ) 1 + ( n 4 ) 2 + + 2 ( n 4 ) + 1 ( n 3 ) = k = 1 n 3 ( n k 2 ) k
又因为
( n 2 ) 2 = k 2 + ( n k 2 ) 2 + 2 ( n k 2 ) k

k = 1 n 3 ( n k 2 ) k = 1 2 ( n 3 ) ( n 2 ) 2 1 2 k = 1 n 3 ( k 2 + ( n k 2 ) 2 )

猜你喜欢

转载自blog.csdn.net/qq_27576655/article/details/81120735