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);