求分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 n 项之和(python递归)
思路:可以看出规律:下一项分子 = 上一项分母 + 上一项分子下一项分母 = 上一项分子解决:1.常规forsum=0a=1#分母b=2#分子for i in range(5):sum+=b/aa,b=b,a+bprint(sum)2.递归def myfunc(n,a=2,b=1):if n == 0:return 0else:return a / b + myfunc( n-1,a+
·
思路:
可以看出规律:下一项分子 = 上一项分母 + 上一项分子
下一项分母 = 上一项分子
解决:
1.常规for
sum=0
a=1 #分母
b=2 #分子
for i in range(5):
sum+=b/a
a,b=b,a+b
print(sum)
2.递归
def myfunc(n,a=2,b=1):
if n == 0:
return 0
else:
return a / b + myfunc( n-1,a+b, a)
print(myfunc(4))
3.另外的解法
其实与斐波那契数列相关
# Fibonacci 序列: 这里贴合题目,设定第一项为1、第2项为2
def fibonacci(n):
if n == 1:
return 1
elif n == 2:
return 2
else:
return fibonacci(n-1) + fibonacci(n-2)
def myfunc(n):
if n==1:
return 2
else:
return fibonacci(n+1)/fibonacci(n)+myfunc(n-1)
print(myfunc(4))
今日创作的bgm:《真的爱你》-- beyond
更多推荐
已为社区贡献2条内容
所有评论(0)