亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算Python中斐波那契數列的第n個項

計算Python中斐波那契數列的第n個項

瀟瀟雨雨 2021-03-01 14:08:03
下面的代碼是使用t的各種測試案例的矩陣冪計算python中的n項和斐波那契序列。但是該程序給出了荒謬的輸出。請告訴我我錯了。當我在C ++中運行代碼時,它可以完美運行。class matrix:    def __init__(self):        self.a=self.b=self.c=1        self.d=0    def mul(self,e,f):        ret = matrix()        ret.a=(e.a*f.a)+(e.b+f.c)        ret.b=(e.a*f.b)+(e.b+f.d)        ret.c=(e.c*f.a)+(e.d+f.c)        ret.d=(e.c*f.b)+(e.d+f.d)        return ret    def exp(self,a,p):        if(p==0):            temp=matrix()            temp.a=temp.b=temp.c=temp.d=1            return temp        if(p==1):            return a        if(p%2==0):            return self.exp(self.mul(a,a),p/2)        else:            return self.mul(a,self.exp(self.mul(a,a),(p-1)/2))    def fib(self,n):        if (n==0):            return 0        if (n==1):            return 1        s=matrix()        s=self.exp(s,n)        return s.dt=int(raw_input())while(t>0):    v=matrix()    n=int(raw_input())    print v.fib(n)    t=t-1
查看完整描述

3 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

我不確定是否需要使用矩陣冪運算來解決此問題。不幸的是,我對Python類還不太了解。但是,以下代碼完成了問題標題所要的操作:查找第n個斐波那契數。下面我將其描述為F_n。注意低n值的初始條件。


def fibN( n ):

"""

fibonacci: int -> int

Returns F_n.

Note: F_1 = 0, F_2 = 1, F_3 = 1, F_4 = 2

"""

n = abs( int( n ))

if n == 0:

    fib = 0

elif n == 1:

    fib = 1

else:

    counter = 2  

    f0 = 0

    f1 = 1

    fib = f0 + f1

    while counter <= n:

        fib = f0 + f1

        f0 = f1

        f1 = fib

        counter += 1

return fib


查看完整回答
反對 回復 2021-03-27
  • 3 回答
  • 0 關注
  • 431 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號