Python 递归计算分数数列

发布时间:2019-05-29 20:42:51编辑:auto阅读(2208)

    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))

     

关键字