百度是不是门户网站,临沂网站定制,河南郑州做网站汉狮,wordpress没小工具题目#xff1a;有一分数序列#xff1a;2/1#xff0c;3/2#xff0c;5/3#xff0c;8/5#xff0c;13/8#xff0c;21/13…求出这个数列的前20项之和。
1. 方法一#xff1a;普通循环
思路#xff1a;利用循环计算每一项的值#xff0c;并累加求和。 优点#x…题目有一分数序列2/13/25/38/513/821/13…求出这个数列的前20项之和。
1. 方法一普通循环
思路利用循环计算每一项的值并累加求和。 优点实现简单易于理解。 缺点计算速度稍慢当计算量较大时效率低下。 代码实现
def sum_sequence(n):a, b 2, 1s 0for i in range(n):s a / ba, b a b, areturn sprint(sum_sequence(20))2. 方法二递归
思路利用递归计算每一项的值并累加求和。 优点实现简单易于理解。 缺点同方法一当计算量较大时效率低下。 代码实现
def fibonacci(n):if n 1:return 2if n 2:return 3return fibonacci(n-1) fibonacci(n-2)def sum_sequence(n):s 0for i in range(1, n1):s fibonacci(i) / fibonacci(i-1)return sprint(sum_sequence(20))3. 方法三列表推导式
思路利用列表推导式计算每一项的值并累加求和。 优点代码简洁易于理解计算速度较快。 缺点计算量较大时列表占用的内存空间较大。 代码实现
def sum_sequence(n):s sum([fibonacci(i) / fibonacci(i-1) for i in range(1, n1)])return sprint(sum_sequence(20))4. 方法四生成器表达式
思路利用生成器表达式计算每一项的值并累加求和。 优点代码简洁易于理解计算速度快不占用过多内存空间。 缺点无法同时使用列表中的方法。 代码实现
def sum_sequence(n):s sum(fibonacci(i) / fibonacci(i-1) for i in range(1, n1))return sprint(sum_sequence(20))5. 方法五数学公式
思路利用斐波那契数列的特性直接计算前n项和。 优点计算速度最快。 缺点代码实现较复杂适用范围有限。 代码实现
import mathdef sum_sequence(n):sqrt5 math.sqrt(5)s (pow((1sqrt5)/2, n1) - pow((1-sqrt5)/2, n1)) / sqrt5 - 1return sprint(sum_sequence(20))最推荐的方法是方法四使用了生成器表达式代码简洁易懂计算速度快内存空间占用较少。