斐波那契数列的C语言实现(使用数组)
以下是使用数组实现斐波那契数列的几种C语言方法:

(图片来源网络,侵删)
方法1:基本数组实现
#include <stdio.h>
int main() {
int n, i;
printf("请输入要生成的斐波那契数列项数: ");
scanf("%d", &n);
if (n <= 0) {
printf("请输入一个正整数,\n");
return 1;
}
int fib[n]; // 创建数组存储斐波那契数列
// 初始化前两项
fib[0] = 0;
if (n > 1) {
fib[1] = 1;
}
// 计算后续项
for (i = 2; i < n; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
// 输出数列
printf("斐波那契数列的前%d项为:\n", n);
for (i = 0; i < n; i++) {
printf("%d ", fib[i]);
}
printf("\n");
return 0;
}
方法2:函数实现(可复用)
#include <stdio.h>
void printFibonacci(int n) {
if (n <= 0) {
printf("请输入一个正整数,\n");
return;
}
int fib[n];
fib[0] = 0;
if (n > 1) {
fib[1] = 1;
}
for (int i = 2; i < n; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
printf("斐波那契数列的前%d项为:\n", n);
for (int i = 0; i < n; i++) {
printf("%d ", fib[i]);
}
printf("\n");
}
int main() {
int n;
printf("请输入要生成的斐波那契数列项数: ");
scanf("%d", &n);
printFibonacci(n);
return 0;
}
方法3:动态内存分配(处理大数列)
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i;
printf("请输入要生成的斐波那契数列项数: ");
scanf("%d", &n);
if (n <= 0) {
printf("请输入一个正整数,\n");
return 1;
}
// 动态分配内存
int *fib = (int *)malloc(n * sizeof(int));
if (fib == NULL) {
printf("内存分配失败!\n");
return 1;
}
fib[0] = 0;
if (n > 1) {
fib[1] = 1;
}
for (i = 2; i < n; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
printf("斐波那契数列的前%d项为:\n", n);
for (i = 0; i < n; i++) {
printf("%d ", fib[i]);
}
printf("\n");
// 释放内存
free(fib);
return 0;
}
方法4:只打印不存储(节省内存)
#include <stdio.h>
int main() {
int n, i;
int a = 0, b = 1, c;
printf("请输入要生成的斐波那契数列项数: ");
scanf("%d", &n);
if (n <= 0) {
printf("请输入一个正整数,\n");
return 1;
}
printf("斐波那契数列的前%d项为:\n", n);
for (i = 1; i <= n; i++) {
printf("%d ", a);
c = a + b;
a = b;
b = c;
}
printf("\n");
return 0;
}
注意事项
- 对于较大的n值,斐波那契数列可能会超出int类型的范围,可以考虑使用long long或大数库。
- 方法3使用动态内存分配,可以处理非常大的数列(受系统内存限制)。
- 方法4不存储整个数列,节省内存,但无法后续访问数列中的特定项。
选择哪种方法取决于你的具体需求,是需要存储整个数列还是只需要打印出来。

(图片来源网络,侵删)
