斐波那契数列用C语言数组怎么实现?

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 C语言 正文

斐波那契数列的C语言实现(使用数组)

以下是使用数组实现斐波那契数列的几种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;
}

注意事项

  1. 对于较大的n值,斐波那契数列可能会超出int类型的范围,可以考虑使用long long或大数库。
  2. 方法3使用动态内存分配,可以处理非常大的数列(受系统内存限制)。
  3. 方法4不存储整个数列,节省内存,但无法后续访问数列中的特定项。

选择哪种方法取决于你的具体需求,是需要存储整个数列还是只需要打印出来。

斐波那契数列 c语言 数组
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
dede还原数据库变量
« 上一篇 03-05
dede数据库备份文件存放在哪个目录?
下一篇 » 03-05

相关文章

取消
微信二维码
支付宝二维码

目录[+]