Python 遞歸計算分數數列


C語言的課后習題

求數列:2/1,3/2,5/3,8/5,13/8,21/13,...前50項的和

數列規律:

第二項的分母是【前一項分子】

第二項的分子是【前一項分子與分母的和】

from fractions import Fraction


def fn(x):
    """
    計算每一項的值
    """
    time = 1
    fz = 2
    fm = 1
    if x == 1:return fz / fm
    #if x == 1:return Fraction(fz, fm) 這句話是分數表示
    else:
        while time < x :
            cost = fz + fm
            fm = fz
            fz = cost
            time = time + 1
        return fz / fm
        #return Fraction(fz, fm)

def sum_fn(x):
    """
    遞歸計算,進行函數每一項的相加
    """
    if x == 1:return 2
    else:
        return fn(x) + sum_fn(x-1)

a = int(input("請輸入連續加到的項數:"))
print(sum_fn(a))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM