在数学中N!表示N的阶乘,即1到N的乘积,如3!=1*2*3 ,且0!=1。下面的两段C++代码用于求1到N的阶乘之和,如N为3,则结果是9(1!+2!+3!的值)。选项中的说法正确的是( )。
1 // 实现1 2 int i,N; 3 cin >> N; 4 int tnt = 0, last = 1; 5 for (i = 1; i < N + 1; i++){ 6 last *= i; 7 tnt += last; 8 } 9 cout << tnt << endl;
1 // 实现2 2 int i,N; 3 cin >> N; 4 int tnt = 0, tmp; 5 for (i = 1; i < N + 1; i++){ 6 tmp = 1; 7 for (int j = 1; j < i + 1; j++) 8 tmp *= j; 9 tnt += tmp; 10 } 11 cout << tnt << endl;
虽然实现1的代码短小,但效率并不高
实现2的代码效率更高,且更易于理解
实现1因为应用了前项计算结果,计算量更小,因此效率高
两种实现,效率几乎一致