返回n == 0? 0:fib2(n,0,1)我找不到?

时间:2013-11-16 13:14:12

标签: c recursion fibonacci

unsigned long fib(unsigned int n)
{
  return n == 0 ? 0 : fib2(n, 0, 1);
}

unsigned long fib2(unsigned int n, unsigned long p0, unsigned long p1)
{
  return n == 1 ? p1 : fib2(n - 1, p1, p0 + p1);
}

我试图在单次递归中编写斐波纳契,我发现了代码。但我第一次看到

return n == 0 ? 0 : fib2(n, 0, 1);

代码。什么是"?"":",我找不到任何关于那个。那是什么?

1 个答案:

答案 0 :(得分:0)

? :是C中的三元运算符。它类似于if else语句。声明

 return exp1 ? exp2 : exp3;  
如果exp2为true,则

返回exp1,否则返回exp3。它相当于

if(exp1)  
    return exp2;  
else 
    return exp3;