用C语言求斐波那契数列前多少项和递推法
时间: 2024-01-02 13:22:31 浏览: 51
斐波那契数列是指从第3项开始,每一项都是前两项的和,即:
F(1) = 1, F(2) = 1
F(n) = F(n-1) + F(n-2) (n >= 3)
用递推法可以求出斐波那契数列前n项的和,C语言代码如下:
```c
#include <stdio.h>
int main() {
int n, i;
long long a, b, c, sum;
printf("请输入要求的斐波那契数列项数:");
scanf("%d", &n);
a = b = 1; // 初始化前两项为1
sum = 2; // 初始化和为2(前两项之和)
for (i = 3; i <= n; i++) { // 从第三项开始循环
c = a + b; // 当前项为前两项之和
sum += c; // 累加到和中
a = b; // 更新前两项
b = c;
}
printf("斐波那契数列前%d项的和为:%lld\n", n, sum);
return 0;
}
```
这个程序的时间复杂度是O(n),空间复杂度是O(1)。
相关问题
用C语言求斐波那契数列前多少项和
可以用C语言编写一个程序来求斐波那契数列前n项的和,代码如下:
```c
#include <stdio.h>
int main() {
int n, i, sum = 0, a = 0, b = 1, c;
printf("请输入要求的斐波那契数列项数n:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
c = a + b;
a = b;
b = c;
sum += a;
}
printf("斐波那契数列前%d项的和为:%d\n", n, sum);
return 0;
}
```
在程序中,首先输入要求的斐波那契数列项数n,然后使用for循环计算前n项的和,并输出结果。其中变量a和b分别表示前两项,c表示当前项,sum记录前n项的和。
用c语言求斐波那契数列前n项和
以下是使用循环方式实现斐波那契数列前n项和的C语言代码:
```c
#include <stdio.h>
int main() {
int n = 10; // 求前10项和
int sum = 0;
int a = 0, b = 1;
for (int i = 0; i < n; i++) {
sum += a;
int c = a + b;
a = b;
b = c;
}
printf("斐波那契数列前%d项的和为:%d\n", n, sum);
return 0;
}
```
以上代码中,变量a和b分别表示斐波那契数列中的前两项,sum表示前n项和。循环的次数为n,每次循环时先将a加到sum中,然后计算出下一项c,将a和b分别更新为下一项的值。
如果要使用递归方式实现斐波那契数列前n项和,可以参考以下代码:
```c
#include <stdio.h>
int fibonacci(int n) {
if (n <= 1) {
return n;
}
return fibonacci(n-1) + fibonacci(n-2);
}
int fibonacci_sum(int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += fibonacci(i);
}
return sum;
}
int main() {
int n = 10; // 求前10项和
int sum = fibonacci_sum(n);
printf("斐波那契数列前%d项的和为:%d\n", n, sum);
return 0;
}
```
以上代码中,fibonacci函数用于计算斐波那契数列中第n项的值,fibonacci_sum函数用于计算前n项的和。递归的方式计算斐波那契数列中每一项的值,然后将它们累加得到前n项的和。