问题描述
double recursively(int n) {
(n==0)?(return 0.0):((n==1)?(return 1.0):(return 2*recursively(n-1)+recursively(n-2)));
}
当我在递归函数中使用三元运算符时,它没有显示“预期的表达式 C/C++(29)”错误。我正在使用 Visual Studio 代码。有什么可能的原因吗?
解决方法
正式名称是“条件运算符”,它是一个产生值的表达式 - a ? b : c
不是 if (a) b; else c;
的简写,而是值 b
和 { 之间的选择{1}}。
重写以返回表达式的值:
c
return n==0 ? 0.0 : (n==1 ? 1.0 : 2*recursively(n-1)+recursively(n-2));
周围的括号在技术上是多余的,但更易于阅读。
我有时会像这样断行:
n == 1 ? ...