如程序: for a=1 to 3 for b=a to 3 for c=b to 3 x=x+1 next c next b next a print x 象这种多重FOR循环,有什么方法(公式)可以得到最后的答案呢?? 这种题目在考试的笔试会有,如果数值少还可以一步一步来,但是如果是上百的话,那自己算是不太可行的. 所以在这里请教高手,,有什么方法可以最快得到答案...
做下等值转换处理。
对最里层的循环进行等值变换后为:
For a = 1 To 3
For b = a To 3
x = x + (3 - b) + 1
Next b
' 这层循环可以理解为:加上一个差值为1的递减的等差数列,数列从(3-a)+1到1
' 递减的差值为1的等差数列Ax,...,Ay的计算公式为:(Ax+Ay)*(Ax-Ay+1)/2
Next a
再对里层的循环进行等值变换后为:
For a = 1 To 3
x = x + ((3 - a + 1) + 1) * ((3 - a + 1) - 1 + 1) / 2
Next a