青蛙跳台阶问题

发布于 2022-09-01 16:37:33 字数 275 浏览 10 评论 0

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
不是有左操作数吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

夜无邪 2022-09-08 16:37:33

左操作数必须是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);
}

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

流年已逝 2022-09-08 16:37:33

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

聽兲甴掵 2022-09-08 16:37:33

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

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

return climbStairs(n-1) + climbStairs(n-2);
心的位置 2022-09-08 16:37:33

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

兮颜 2022-09-08 16:37:33

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

狼性发作 2022-09-08 16:37:33

可以优化一下吗

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文