python真可怕 发表于 2021-12-11 17:13:27

有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数

有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数,求详解

傻眼貓咪 发表于 2021-12-11 17:33:12

本帖最后由 傻眼貓咪 于 2021-12-11 19:56 编辑

def fibonacci(n, SUM = 0):
      if n == 0: return 0
      elif n == 1: return 1
      return (fibonacci(n-1, SUM)+fibonacci(n-2, SUM))

def sequence(n):
    n += 2
    numerator = fibonacci(n)
    denominator = fibonacci(n-1)
    print(f"分数数列第{n-2}个分数为:{numerator}/{denominator}")

sequence(20)输出结果:分数数列第20个分数为:17711/10946

阿奇_o 发表于 2021-12-11 19:22:52

傻眼貓咪 发表于 2021-12-11 17:33
输出结果:

^_ 你这有个小错误哦~

阿奇_o 发表于 2021-12-11 19:27:28


如果要 以分数形式显示结果,并且 不用递归,可以用下面的方法:
>>> def fib(n):
        a, b, s = '2', '1', ''
        for _ in range(n):
                s += f'{a}/{b}, '
                a, b = str(int(a)+int(b)), a
        return s[:-2]

>>> fib(5)
'2/1, 3/2, 5/3, 8/5, 13/8'
>>> fib(20).split(', ')[-1]
'17711/10946'

若要 计算前N项的和,也可以利用该方法(较通用,但不直接),如
>>> eval(fib(5).replace(', ', '+'))
8.391666666666667

傻眼貓咪 发表于 2021-12-11 19:56:55

阿奇_o 发表于 2021-12-11 19:27


已经修改,感谢指教,但是题目要求的不是值,而是分数
页: [1]
查看完整版本: 有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数