FizzBu​​zz中的三元用法c ++ 1.5(codecademy)

时间:2012-03-14 14:32:19

标签: recursion ternary-operator

我一直在运行codeacademy的教程和项目。在FizzBu​​zz ++ 1.5上,他们希望我们使用三元运算符将“Wobble”函数重写为Wob。我继续使用以下代码收到错误说“缺少操作数”。返回结束时的+1也是如何工作的,javaScript将它存储为临时值,因为它没有被赋值给任何var。谢谢您的帮助。代码如下。

var Wibble = {

  Wobble: function(a, b) {
    if(a===b) 
        //if the variables are equal return 0
        return 0;
    else {
        //decrement the larger of the 2 values
        if (a>b) {
            a--;
        } else {
            b--;
        }
        //call this function again with the decremented values
        //once they are equal the functions will return up the stack
        //adding 1 to the return value for each recursion
        return Wibble.Wobble(a,b)+1;
    }
  },


//This is the line of code that doesn't want to function..
  Wob: function(a, b) {
    (a===b) ? return 0 :(a<b) ? return this.Wob(a--,b)+1 : return this.Wob(a,b--)+1;
    }
 };

1 个答案:

答案 0 :(得分:4)

以下带有三元运算符的表达式:

result = (a) ? x : y;

等同于以下内容:

if(a)
{
    result = x;
}
else
{
    result = y;
}

请注意语法差异,在三元运算符中,您在中转换,而在if语句语法中,您在中分配开关。

也就是说:

(a == b) ? return 0 : return 1;

等同于:

if(a == b)
    return 0;
else
    return 1;

相反,你想写:

return (a == b) ? 0 : 1;