题解 | #斐波那契数列#

斐波那契数列

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还是要慢慢来

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务