zoukankan      html  css  js  c++  java
  • 【Python3练习题 019】 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

    后一个分数的分子=前一个分数的分子+分母,后一个分数的分母=前一个分数的分子,循环个20次就有结果。注意,假设分子为a,分母为b,虽然 a = a + b,

    但此时a已经变成 a+b 了,所以再给b重新赋值的时候,得是 (a+b)-b 才能等于原分母b,所以重新赋值时就得写成 a-b

    方法一

    from fractions import Fraction


    def fibonacci(n):
    a, b = 1, 2
    res = [1]
    i = 1
    while i < n:
    a, b = b, a+b
    res.append(a)
    i += 1
    else:
    return res

    result = fibonacci(21)

    sum_result = sum([Fraction(i[0],i[1]) for i in zip(result[1:],result[0:-1])])
    print (sum_result)



    方法二
    from fractions import Fraction
     
    sum = 0
    a, b = 2, 1
    for i in range(20):
        sum = sum + Fraction(a/b)
        a = a + b
        b = a - b
    print(sum)
     
    方法三
    sum = 0
    a, b = 2, 1
    for i in range(20):
        sum = sum + a/b
        a = a + b
        b = a - b
    print(sum)
    逆风的方向更适合飞翔,不怕千万人阻挡,只怕自己投降!
  • 相关阅读:
    CodeForces
    4.15随笔
    oracle新建用户并赋予权限等
    catch时,获取异常信息
    ORACLE 判断是否为数字类型
    UNION ALL用法
    2019.11.7随笔
    oracle 查询锁表和解锁
    2019.11.1随笔
    oracle拼接子查询返回的多个结果
  • 原文地址:https://www.cnblogs.com/jackzz/p/9125449.html
Copyright © 2011-2022 走看看