代码之家  ›  专栏  ›  技术社区  ›  Bryan Corazza

C#函数,用于查找两个数字的增量[重复]

  •  -1
  • Bryan Corazza  · 技术社区  · 17 年前

    我只是想知道.net框架中是否内置了任何东西,可以轻松返回两个数字之间的增量?我写了这样的代码,但听起来它应该已经在框架中了。

    9 回复  |  直到 14 年前
        1
  •  65
  •   Robert Harvey    17 年前
    delta = Math.Abs(a - b);
    
        2
  •  18
  •   abelenky    17 年前

    delta = Math.Abs(a - b);
    
        3
  •  14
  •   JulianR    17 年前
    public static int Delta(int a, int b)
    {
      int delta = 0;
      if (a == b)
      {
        return 0;
      }
      else if (a < b)
      {
        while (a < b)
        {
          a++;
          delta++;
        }
        return delta;
      }
      else
      {
        while (b < a)
        {
          b++;
          delta++;
        }
        return delta;
      }
    }
    

    p

    哦,天哪,我希望没有(未来的)雇主遇到这种情况,在他读完这篇文章之前,不再厌恶地阅读。。

        4
  •  11
  •   Daniel Earwicker    17 年前

    Linq版本(需要CLR 4.0)。

    (掰手指,清嗓子)

    var delta = (from t in Enumerable.Range(a, a).Zip(Enumerable.Range(b, b))
                select Math.Abs(t.Item1 - t.Item2))
                .First();
    
        5
  •  9
  •   Stack Overflow is garbage    17 年前

    这不就是减号运算符的作用吗?p

        6
  •  8
  •   fortran    17 年前
    public static int Delta(int a, int b)
    {
        return a > 0? Delta(a-1, b-1) : a < 0 ? Delta(a+1, b+1) : b > 0 ? b : -b;
    }
    

    我认为这甚至比@JulianR-Delta实现更好:-p

    编辑:我没有意识到@Robert Harvey已经提出了这个建议,这要归功于他;-)

        7
  •  1
  •   Dario    17 年前

    德尔塔在集合论和微积分中有一定的意义,但这不是指数字!

    如果你想计算两个数字a和b之间的差,你可以写 |a - b| Math. Abs (a - b)

        8
  •  1
  •   abelenky    17 年前

    我决定修改JulianR上面有趣的回答。

    public static int Delta(int a, int b)
    {
      int delta = 0;
      while (a < b)
      {
        ++a;
        ++delta;
      }
      while (b < a)
      {
        ++b;
        ++delta;
      }
      return delta;
    }
    

    (对于那些幽默感受损的人来说……这并不比引发话题的奇怪问题更严重)

        9
  •  0
  •   Pitka    9 年前
    (r1+r2)/2
    

    两个数字之间的平均值。