编写函 数fib(n)求斐波那契数列第n项的值,规定第- -- 项的值为1.并利用函数式 编程(匿名函数、可迭代对象)求某列表如[5, 15, 3, 7]中的值所对应的fib(n)值.
时间: 2024-10-20 14:17:25 浏览: 31
eta-fib-service:一个可以计算斐波那契数列的简单Web服务
编写一个计算斐波那契数列的函数 `fib(n)`,我们可以使用递归或动态规划的方式实现。对于给定的整数 n,如果 n 等于 0 或 1,则返回 1;否则,返回前两个斐波那契数之和。
递归版本的 Python 代码示例:
```python
def fib(n):
if n <= 1:
return 1
else:
return fib(n - 1) + fib(n - 2)
```
如果你想要利用函数式编程思想,特别是通过匿名函数(lambda表达式)或生成器,可以采用以下方法:
1. 使用列表推导式结合 lambda 函数 (适用于Python 3.8+,因为旧版Python对高阶函数支持有限):
```python
# 利用lambda表达式和map()函数
list(map(lambda n: fib(n), [5, 15, 3, 7]))
```
这将计算列表 `[5, 15, 3, 7]` 中每个元素对应斐波那契数。
2. 使用生成器:
```python
def fibonacci():
a, b = 1, 1
while True:
yield a
a, b = b, a + b
# 生成器应用到列表
[fibonacci().__next__() for _ in [5, 15, 3, 7]]
```
这里我们创建了一个无限生成器,然后只取我们需要的那些值。
阅读全文