📅  最后修改于: 2023-12-03 15:26:13.829000             🧑  作者: Mango
斐波那契数列(Fibonacci sequence)是指1、1、2、3、5、8、13、21、34、……这样的数列。其中第1、2个数为1,从第3个数开始,每个数都是前两个数之和。斐波那契数列被认为是最简单的动态规划例子。
斐波那契数列的公式可以表示为:Fn=Fn-1+Fn-2,其中F1=1,F2=1。
斐波那契数的平方和是指将斐波那契数列中的每个数平方后再求和。例如,前4个斐波那契数的平方和为1 + 1 + 4 + 9 = 15。
下面是一个简单的实现斐波那契数列和斐波那契数的平方和的Python代码片段:
def fib(n):
if n == 1 or n == 2:
return 1
return fib(n-1) + fib(n-2)
def fib_square_sum(n):
result = 0
for i in range(1, n+1):
result += fib(i)**2
return result
其中,fib
函数用于计算第n
个斐波那契数,fib_square_sum
函数用于计算前n
个斐波那契数的平方和。这里使用了递归的方式来计算斐波那契数,可能会存在一定的效率问题,但是易于理解。
另外,由于斐波那契数列也可以使用循环的方式来计算,因此也可以使用循环的方式来实现fib
函数。下面是另一种实现方式:
def fib(n):
if n == 1 or n == 2:
return 1
a, b = 1, 1
for i in range(3, n+1):
a, b = b, a+b
return b
下面是对上述代码的测试:
assert fib_square_sum(4) == 15
assert fib_square_sum(5) == 40
assert fib_square_sum(6) == 91
assert fib(1) == 1
assert fib(2) == 1
assert fib(3) == 2
assert fib(4) == 3
assert fib(5) == 5
assert fib(6) == 8
assert fib(7) == 13
斐波那契数列和斐波那契数的平方和是经典的数学问题,也是算法和数据结构中常见的例子。通过这个问题,不仅可以深入理解递归和循环的思想,还可以学习到如何使用Python来实现这个问题。