编写一个算法来创建出一个数组,而且数组中的元素满足斐波那契数列的规律。斐波那契数列,又称黄金分割数列(黄金分割数列:这个数列从第3项开始,每一项都等于前两项之和),指的是这样一个数列:0、1、1、2、3、5、8、13、21……
时间: 2023-12-28 13:02:11 浏览: 37
算法如下:
1. 定义一个数组fib,初始化为[0, 1],表示斐波那契数列的前两项。
2. 定义一个变量n,表示要生成的斐波那契数列的长度。
3. 循环n次,每次将fib数组的最后两项相加,并将结果添加到fib数组中。
4. 返回fib数组。
实现代码如下(使用Python语言):
def fibonacci_array(n):
fib = [0, 1]
for i in range(2, n):
fib.append(fib[-1] + fib[-2])
return fib
# 测试
print(fibonacci_array(10)) # 输出[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
相关问题
算法概论C语言斐波那契数列一个指数算法
斐波那契数列是一个非常经典的数列,它的定义是:第0项为0,第1项为1,从第2项开始,每一项都等于前两项之和。即:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 以此类推。在C语言中,可以使用递归的方式来实现斐波那契数列,但是这种方法的时间复杂度是指数级别的,效率非常低。下面是一个指数级别的斐波那契数列实现的代码:
```
int fibonacci(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
```
这个函数的时间复杂度是O(2^n),当n比较大时,运行时间会非常长。因此,我们需要寻找更加高效的算法来实现斐波那契数列。
用递归算法和非递归算法各编写一个程序,求斐波那契数列的第n项。python
递归算法:
```python
def fibonacci_recursive(n):
if n <= 1:
return n
else:
return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)
```
非递归算法:
```python
def fibonacci_iterative(n):
if n <= 1:
return n
else:
a, b = 0, 1
for i in range(n-1):
a, b = b, a+b
return b
```
两个函数的参数均为斐波那契数列的第n项,返回值为该项的值。