我正在编写一个简单的阶乘函数,以在c ++中练习递归。 我想以三进制格式编写它,但是它没有用,所以我首先将其写出以查看它是否以更传统的方式工作。
三元格式:
num > 1 ? num * factorial(num-1) : return 1;
繁体:
if (num > 1){
return num * factorial(num-1);
}
else {
return 1;
}
我只是在打印factorial(5)的结果,该结果应显示120。虽然它对第二个有效,但对第一个无效。为什么不能使用三进制格式的return?或者,我使用错了吗?
答案 0 :(得分:2)
您可以在条件格式中很好地使用阶乘,但不能使用return
。 return
是一个语句,而条件运算符需要表达式。方便地,条件运算符本身是一个表达式,可以让您执行此操作。
return num > 1 ? num * factorial(num-1) : 1;
请注意,我们返回的是 whole 表达式的结果,而不仅仅是num > 1
片断。如果我想在括号中多余,可以这样做,在语义上是等效的。
return (num > 1 ? num * factorial(num-1) : 1);