Count computation steps in a method with ternaries
我正在寻找一种计算步骤数量的方法:
1 2 3 4 5 6 7 | public static int Calculate0(int end, int init, int lim, int bon) { return end <= 0 ? 0 : Math.Min(2 * lim, bon == 0 ? init : init + (2 * bon - lim / bon) * end); } |
我想我的问题有两个方面:
我一直试图通过微软的指南来阅读关于
我的代码当前看起来像这样。这是正确的吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | using System; namespace TestProject { internal class Program { private int calc0Steps = 0; public static void Main() { var calc0 = Program.Calculate0(1, 0, 1, 2); Console.WriteLine("Calculate: {0} | Steps: {1}", calc, calc0Steps); } public static int Calculate0(int end, int init, int lim, int bon) { return end <= 0 ? 0 : calc0Steps; Math.Min(2 * lim, bon == 0 ? init : init + (2 * bon - lim / bon) * end); } } } |
更新
我很抱歉弄混了。我试着缩小范围:我怎么能在
我的任务的主要范围是对提供的fhcimolin方法进行全面的测试覆盖,并将此方法与
我有另一个版本的
如果您的逻辑正确,您可能希望您的
1 2 3 4 | public static int Calculate0(int end, int init, int lim, int bon) { return end <= 0 ? calc0Steps : Math.Min(2 * lim, bon == 0 ? init : init + (2 * bon - lim / bon) * end); } |
相当于:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public static int Calculate0(int end, int init, int lim, int bon) { if (end <= 0) { return calc0Steps; } else { int aux; if (bon == 0) { aux = init; } else { aux = init + (2 * bon - lim / bon) * end; } return Math.Min(2 * lim, aux); } } |