. E$ T& @, w. o; h5 o: ^! e1.递归方法:0 K; ~# H) Y) o& A, ^
! y, n' l2 S, B, W' E6 z9 H5 g7 Fdef fibonacci_recursive(n): , w& A5 [0 w; ^ o2 M6 ~; e if n <= 0:* o; y+ |! x/ G- u3 N) G& L+ {
return 0, F) p9 |9 g! Y# l4 S
elif n == 1:+ z. _9 B4 Z. _7 |) w- r
return 1 ; X6 N( i- _( P6 o$ c! T. ~" ^9 A else:) A2 L5 u; Y, b- _, C) h2 l
return fibonacci_recursive(n-1) + fibonacci_recursive(n-2), P. S# }2 E O' S' {0 H5 J
7 C) Z0 o2 R, `这个递归函数将根据差分方程 F(n) = F(n-1) + F(n-2) 计算斐波那契数列的第 n 项。但是,递归方法效率较低,因为它会重复计算相同的子问题,导致指数级的时间复杂度。 * I' a* l2 L3 ], n! f " Y1 `* P7 O' J3 n2.循环方法:/ K8 g5 @2 `- [" u( c
* c6 ]9 i4 c& F! I4 o* V
def fibonacci_iterative(n): 3 Z* q) ?: z2 w0 v8 L if n <= 0: ( p, z7 S" z$ P6 Z/ Y+ o2 `9 i return 0 - N2 S5 ^# j* n5 J+ Y! |1 e5 x0 ` elif n == 1: + }6 c7 P! | f: r5 ]& ^ return 1 5 S# D2 v5 H1 x; ] P j1 L$ [3 u ?7 I5 G0 E
fib = [0] * (n + 1) # Z) s$ a0 P& K9 p( x fib[1] = 1" u' i' |3 G! n) |/ r
& o6 v$ A: V, j! y( R) r* A
for i in range(2, n + 1):8 a) {$ E0 g5 s& w5 S
fib[i] = fib[i-1] + fib[i-2]4 a0 ]! ~" _! s3 M2 y
5 f' \1 X/ G( A
return fib[n]0 }0 A S- x+ ^% t; v6 t
% \8 L! ~+ F$ z' f* O! W这个迭代方法使用一个列表来存储计算过的斐波那契数,避免了递归中的重复计算,因此效率更高,具有线性时间复杂度。 W: u1 E8 v. A. M; i4 H你可以选择使用递归或迭代方法来计算斐波那契数列的特定项,具体取决于你的需求和性能要求。如果需要计算大量的斐波那契数,迭代方法通常更有效。$ z3 }* I( }. ~7 E. p- v
) C* u+ z% K# B; \
' x" E% k5 R; T9 o7 S