用c语言编写,用数组的方法求斐波拉契数列前20项
时间: 2024-12-12 17:19:13 浏览: 3
计算斐波那契数列前20项
在C语言中,我们可以使用数组来存储斐波那契数列的前20项。斐波那契数列是一个经典的递归序列,其特点是每一项等于前两项之和。以下是使用动态内存分配的简单示例:
```c
#include <stdio.h>
#include <stdlib.h> // 引入malloc函数,用于动态内存分配
// 函数用来计算并存储斐波那契数列的第n项
int fibonacci(int n, int* fib_array) {
if (n <= 0) return 0;
else if (n == 1) return 1;
// 如果已经存在结果,则直接返回;否则分配空间并计算
if (*fib_array != NULL) return *fib_array[n - 1];
else {
*fib_array = (int*) malloc(n * sizeof(int)); // 动态分配空间
if (*fib_array == NULL) {
printf("内存分配失败!\n");
exit(1);
}
*fib_array[0] = 0; // 第0项
*fib_array[1] = 1; // 第1项
// 递归计算剩余项并存储到数组中
for (int i = 2; i < n; i++) {
(*fib_array)[i] = (*fib_array)[i - 1] + (*fib_array)[i - 2];
}
return (*fib_array)[n - 1]; // 返回第n项
}
}
int main() {
int fib[20]; // 定义数组存储斐波那契数列
for (int i = 0; i < 20; i++) {
fib[i] = fibonacci(i + 1, &fib); // 计算并存储第i+1项到数组
printf("第 %d 项: %d\n", i + 1, fib[i]);
}
// 清理内存
free(fib);
return 0;
}
```
这段代码首先定义了一个数组`fib`来存储斐波那契数列。在主函数中,使用`fibonacci`函数计算并存储每一项。需要注意的是,因为斐波那契数列的增长非常快,所以对于较大的n值,这种方法可能会遇到内存限制。
阅读全文