首页 > 青蛙跳台阶问题

青蛙跳台阶问题

int climbStairs(int n) {
    
    if(1==n)
        return 1;
    if(2 ==n)
        return 2;
    return climbStairs(n) = climbStairs(n-1) + climbStairs(n-2);
}

青蛙跳台阶问题,这种求法怎么老报:Line 7: lvalue required as left operand of assignment
不是有左操作数吗


复杂度太高了,楼主
fib数列必须是迭代解决


左操作数必须是variable,而不能是value。
比如

int a = 5;       //这是对的
5 = 5;           //错的

方法的返回值是value,所以你的写法会报错。

你的代码应该这么改。

int climbStairs(int n) {
    
    if(1==n)
        return 1;
    if(2 ==n)
        return 2;
    return climbStairs(n-1) + climbStairs(n-2);
}

顺便说一句,用迭代比用递归有效率得多。这类似斐波那契数。


同意用迭代。。。时间复杂度和空间复杂度都降到了最低


是有左操作数,但在这里左操作数要是一个左值啊!


左操作数是一个函数调用,当然不行。

这里的赋值并没有必要,改成:

return climbStairs(n-1) + climbStairs(n-2);
【热门文章】
【热门文章】