为什么可以';我在三元表达式中使用return,但在正则if-else语句中可以吗? 我编写了一个简单的阶乘函数来实现C++中的递归。 我想用三元格式写,但它不起作用,所以我先把它写出来,看看它是否能用更传统的方式工作

为什么可以';我在三元表达式中使用return,但在正则if-else语句中可以吗? 我编写了一个简单的阶乘函数来实现C++中的递归。 我想用三元格式写,但它不起作用,所以我先把它写出来,看看它是否能用更传统的方式工作,c++,return-value,ternary-operator,C++,Return Value,Ternary Operator,三值格式: num > 1 ? num * factorial(num-1) : return 1; 传统的: if (num > 1){ return num * factorial(num-1); } else { return 1; } 我只是打印阶乘(5)的结果,它应该显示120。虽然它对第二个有效,但对第一个无效。为什么我不能使用三元格式的return?或者,我用错了吗?您可以在条件形式中使用factorial,但不能使

三值格式:

   num > 1 ? num * factorial(num-1) : return 1;
传统的:


   if (num > 1){
    return num * factorial(num-1);
   }
   else {
    return 1; 
   }

我只是打印阶乘(5)的结果,它应该显示120。虽然它对第二个有效,但对第一个无效。为什么我不能使用三元格式的return?或者,我用错了吗?

您可以在条件形式中使用factorial,但不能使用
return
return
是一条语句,而条件运算符需要表达式。方便的是,条件运算符本身是一个表达式,它允许您执行此操作

return num > 1 ? num * factorial(num-1) : 1;
请注意,我们返回的是整个表达式的结果,而不仅仅是
num>1
片段。如果我想用括号来表示多余,我可以这样做,这在语义上是等价的

return (num > 1 ? num * factorial(num-1) : 1);

您可以在条件形式中使用factorial,但不能使用
return
return
是一条语句,而条件运算符需要表达式。方便的是,条件运算符本身是一个表达式,它允许您执行此操作

return num > 1 ? num * factorial(num-1) : 1;
请注意,我们返回的是整个表达式的结果,而不仅仅是
num>1
片段。如果我想用括号来表示多余,我可以这样做,这在语义上是等价的

return (num > 1 ? num * factorial(num-1) : 1);

因为
return
不是表达式。因为
return
不是表达式。