有⼀分数序列: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 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 傻眼貓咪 发表于 2021-12-11 17:33
输出结果:
^_ 你这有个小错误哦~
如果要 以分数形式显示结果,并且 不用递归,可以用下面的方法:
>>> 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
阿奇_o 发表于 2021-12-11 19:27
已经修改,感谢指教,但是题目要求的不是值,而是分数
页:
[1]