python如何寻找第一个n位的斐波那契数

自定义函数Fib_n(n)计算斐波那契数列中第一次出现n位数字的是哪一项,返回项的序号及该数。输入待寻找的斐波那契数列中第一次出现的位数n,调用Fib_n()函数计算并输出满足要求的项的序号及数。
输入
[1,1000]范围内的一个整数
输出
第一次出现的该数长度的斐波那契数
样例输入
10
样例输出
Fib(45)=1134903170

我的问题是 如何递归?

def fib_n(n):
    if n == 1:
        return 0, 0
    else:        
        a = [0, 1]        
        i = 2
        while True:
            t =  a[i-2] + a[i-1]
            if len(str(t)) == n:
                return t, i
            a.append(t)
            i += 1
b = int(input(">>>"))
s,j = fib_n(b)

print(f"Fib({j}) = {s}")

建议不要用递归,如果n=300,应该跑一天也跑不出来

我给个例子你参考一下:

def Fib_n(n):
    a = 1
    b = 1
    num = 2
    if n==1:
        return 1,1
    while True:
        c = a+b
        num +=1
        a = b
        b = c
        if len(str(c))==n:
            return num,c
        
length = int(input("请输入一个1-1000的数:"))
order_no, data = Fib_n(length)
print(f"第一个{length}位的数字出现在第{order_no}项,数字是:{data}")


img


如有帮助,请采纳!