题解 | #斐波那契数列#
斐波那契数列
https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3
/** * * @param n int整型 * @return int整型 */ int Fibonacci(int n ) { int a=1,b=1;int ret; if(n<3) return 1; else{ ret=Fibonacci(n-1)+Fibonacci(n-2); return ret; } }
这个题烤人的还是py,因为我是py初学者,代码实现仅仅是如此地步,果不其然的WA,chat了一下问题,目前的收获是这样的:
class Solution:
def Fibonacci(self , n: int) -> int:
if n<3:
return 1
else:
a=self.Fibonacci(n-1)
b=self.Fibonacci(n-2)
return a+b
当 $n$ 较大时,递归的层数也相应变得很深,超过了 Python 的默认递归深度限制,从而导致了程序报错。
具体来说,在 Python 中,默认的递归深度为 1000,也就是递归层数不能超过 1000 层。当递归层数超过 1000 层时,Python 解释器会抛出 `RuntimeError: maximum recursion depth exceeded` 异常,表示超过了最大递归深度。
当 $n = 36$ 时,这个函数需要递归调用 29496767 次,远远超过了默认的递归深度限制,因此 Python 解释器会报错。
为了解决这个问题,可以使用循环或者记忆化搜索等方式进行优化,提高效率,并避免递归调用层数过深所导致的错误。
py还是要慢慢来