【例 2.1】求 1×2×3×4×5。
最原始方法:
步骤 1:先求 1×2,得到结果 2。
步骤 2:将步骤 1 得到的乘积 2 乘以 3,得到结果 6。
步骤 3:将 6 再乘以 4,得 24。
步骤 4:将 24 再乘以 5,得 120。
这样的算法虽然正确,但太繁。
改进的算法:
S1: 使 t=1
S2: 使 i=2
S3: 使 t×i, 乘积仍然放在在变量 t 中,可表示为 t×i→t
S4: 使 i 的值+1,即 i+1→i
S5: 如果 i≤5, 返回重新执行步骤 S3 以及其后的 S4 和 S5;否则,算法结束。
如果计算 100!只需将 S5:若 i≤5 改成 i≤100 即可。
如果该求 1×3×5×7×9×11,算法也只需做很少的改动:
S1: 1→t
S2: 3→i
S3: t×i→t
S4: i+2→t
S5:若 i≤11, 返回 S3,否则,结束。
该算法不仅正确,而且是计算机较好的算法,因为计算机是高速运算的自动机器,实现循环
轻而易举。
思考:若将 S5 写成:S5:若 i<11, 返回 S3;否则,结束。
#include <math.h>
#include <stdio.h>
int main()
{
int t = 1;
int i = 3;
// 求 1×2×3×4×5 的
// while (i <= 5) {
// t *= i;
// i += 1;
// }
// 求 100! (1×2×...×100) 的变种
// while (i <= 100)
// {
// t *= i;
// i += 1;
// }
// 计算1×3×5×7×9×11的乘积:
while (i <= 11)
{
t *= i;
i += 2;
}
printf("乘积结果是: %d\n", t);
return 0;
}