如何在C#中自动循环执行代码并累加r从2到10的计算结果
解决C#中循环计算并累加结果的问题
优化后的代码实现
static void Main() { double n = 12; double p = 0.85; double total = 0; // 用于累加所有r对应的计算结果 // 先计算n的阶乘,n固定不变只需计算一次 double factN = 1; for (double x = 1; x <= n; x++) { factN *= x; } // 遍历r从2到10的所有取值 for (double r = 2; r <= 10; r++) { // 重置阶乘变量,避免残留上一次循环的计算值 double factR = 1; double factNR = 1; // 计算r的阶乘 for (double y = 1; y <= r; y++) { factR *= y; } // 计算(n-r)的阶乘 double nr = n - r; for (double z = 1; z <= nr; z++) { factNR *= z; } // 计算当前r对应的项并累加 double currentValue = factN / (factR * factNR) * Math.Pow(p, r) * Math.Pow(1 - p, nr); total += currentValue; } Console.WriteLine("累加结果:" + total); }
关键说明
- 循环控制r:用
for循环直接遍历r的取值范围(2到10),比while循环更直观,因为你明确知道r的起始和结束值。 - 阶乘计算优化:n的阶乘只计算一次(n固定为12),减少重复计算;每次循环r时必须重置
factR和factNR为1,否则会保留上一次的计算结果导致错误。 - 累加逻辑:用
total变量存储每次计算的结果之和,每次循环将当前r对应的计算值加到total中,最终得到总和。 - 变量命名优化:将原代码中模糊的
foct、fuct改为factR、factNR,让变量含义更清晰,便于理解和维护。
内容的提问来源于stack exchange,提问作者theouto
相关产品推荐
相关产品推荐

