C语言实现斐波那契数列

斐波那契数列是一个典型的递归问题,它的定义是这样的:第一项和第二项都是1,从第三项开始,每一项都等于前两项的和,在数学上,斐波那契数列以如下整数序列定义:0, 1, 1, 2, 3, 5, 8, 13, ....

在计算机编程中,我们通常使用循环而不是递归来解决斐波那契数列问题,因为递归会导致大量的重复计算,效率低下,下面我们将使用C语言来实现一个计算斐波那契数列的函数。

我们需要定义一个函数,该函数接受一个整数n作为参数,返回斐波那契数列的第n项,在这个函数中,我们首先检查n是否为0或1,如果是,直接返回1,因为斐波那契数列的前两项都是1,我们初始化两个变量a和b,分别表示斐波那契数列的前两项,初始值都为1,接着,我们使用一个for循环来计算斐波那契数列的第n项,在每次循环中,我们首先计算a和b的和,然后将结果赋值给a(即更新斐波那契数列的当前项),并将原来的a值赋给b(即更新斐波那契数列的前一项),当循环结束时,我们返回a的值,即斐波那契数列的第n项。

c语言斐波那契 c语言斐波那契数列

以下是C语言实现斐波那契数列的代码:

#include <stdio.h>
int fibonacci(int n) {
    if (n == 0 || n == 1) {
        return 1;
    }
    int a = 1, b = 1;
    for (int i = 2; i <= n; i++) {
        int temp = a + b;
        a = b;
        b = temp;
    }
    return a;
}
int main() {
    int n;
    printf("Enter a number: ");
    scanf("%d", &n);
    printf("Fibonacci number is: %d
", fibonacci(n));
    return 0;
}

在这段代码中,我们首先包含了<stdio.h>头文件,以便我们可以使用printf和scanf函数,我们定义了fibonacci函数,该函数接受一个整数n作为参数,返回斐波那契数列的第n项,在main函数中,我们从用户那里获取一个整数n,然后调用fibonacci函数计算斐波那契数列的第n项,并将结果打印出来。

这个程序的时间复杂度是O(n),空间复杂度是O(1),这是因为我们只需要存储斐波那契数列的前两项和当前项,而不需要存储整个数列,这个程序在处理大规模数据时仍然可以保持较高的效率。