使用数组来求斐波那挈数列的第 n 项和前 n 之和。数列有下列公式产生: 第 0 项 f[0]=0; 第 1 项 f[1]=1; 第 n 项 f[n]=f[n-1]+f[n-2];
时间: 2024-09-20 16:15:07 浏览: 40
在C语言中,我们可以使用动态数组来存储斐波那契数列的值。为了求解第n项(f[n])和前n项之和(suma),我们需要编写以下代码:
```c
#include <stdio.h>
#include <stdlib.h> // 动态内存分配
// 定义数组大小,可以根据需求增大
#define SIZE 100
// 初始化斐波那契数组
int fib[SIZE] = {0, 1};
// 求第n项的斐波那契数
int fibonacci(int n) {
if (n <= 0) {
printf("Invalid input. n should be a non-negative integer.\n");
return -1;
} else if (n == 1 || n == 2) {
return fib[n - 1];
} else {
int next_fib = fib[n - 1] + fib[n - 2];
fib[n] = next_fib;
return next_fib;
}
}
// 求前n项之和
int fibonacci_sum(int n) {
int suma = 0;
for (int i = 0; i <= n; i++) {
suma += fibonacci(i);
}
return suma;
}
int main() {
int n;
printf("Enter the value of n: ");
scanf("%d", &n);
// 检查输入的n是否超出数组大小
if (n >= SIZE) {
printf("The given number is too large for this implementation. Try a smaller value.\n");
return 0;
}
// 输出第n项和前n项之和
int fib_n = fibonacci(n);
int fib_sum = fibonacci_sum(n);
printf("Fibonacci number at position %d: %d\n", n, fib_n);
printf("Sum of the first %d Fibonacci numbers: %d\n", n, fib_sum);
return 0;
}
```
在这个代码里,我们首先定义了斐波那契序列的前两项,然后通过递归的方式计算第n项,并在计算过程中同时累计所有之前的项得到前n项之和。
阅读全文