如果声明代码澄清

时间:2014-02-02 05:25:38

标签: c#

有人能够向我解释这段代码的含义吗?

private long GCD(long a, long b) {
            return b == 0 ? a : GCD(b, a % b);
        }

如果为零,则b等于a。否则GCD(b, a % b)。如果0在这里意味着什么呢?或者我误解了return b == 0 ? a : GCD(b, a % b);

2 个答案:

答案 0 :(得分:6)

你的操作顺序错了; ?:在此处具有最低优先级。代码等同于以下内容:

if (b == 0)
    return a;
else
    return GCD(b, a % b);

答案 1 :(得分:1)

  

如果为零,则b等于a。其他GCD(b,a%b)。如果0意味着什么呢?

不,请阅读如下代码:

return ( (b == 0) ? a : GCD(b, a % b)  )  ;

你应该如何阅读代码:

  • 如果b等于零,则该函数应返回0
  • 否则该函数应该返回带有参数的(递归函数)调用的值 - b& A%B