C语言:用递归算法求斐波那契
时间: 2023-11-27 14:54:01 浏览: 89
斐波那契数列是指:1、1、2、3、5、8、13、21、34、……,即第n个数等于其前两个数之和。
递归算法可以很方便地解决这个问题:
```c
#include <stdio.h>
int fibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
int main() {
int n;
printf("请输入要求的斐波那契数列的项数:");
scanf("%d", &n);
printf("斐波那契数列的前%d项为:", n);
for (int i = 1; i <= n; i++) {
printf("%d ", fibonacci(i));
}
printf("\n");
return 0;
}
```
在这个程序中,`fibonacci`函数使用递归算法来计算斐波那契数列,如果n为1或2,则返回1,否则返回前两项的和。主函数中,先读入要求的项数n,然后使用循环依次输出前n项的值。
相关问题
用C语言数组指针实现以下功能:使用递归实现:求斐波那契数列的第n项值
好的,以下是用 C 语言数组指针实现递归求斐波那契数列第 n 项的代码:
```c
#include <stdio.h>
int fibonacci(int n) {
if (n <= 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
int main() {
int n;
printf("请输入斐波那契数列的项数:\n");
scanf("%d", &n);
printf("第%d项的值为:%d\n", n, fibonacci(n));
return 0;
}
```
这个程序中,我们定义了一个递归函数 `fibonacci`,用来求解斐波那契数列的第 n 项。如果 n 小于等于 0,返回 0;如果 n 等于 1,返回 1;否则,返回前两项的和。在 `main` 函数中,我们通过输入 n 来调用 `fibonacci` 函数,并输出结果。
需要注意的是,递归求解斐波那契数列的效率并不高,因为会重复计算很多项。如果要实现更高效的算法,可以使用循环或矩阵快速幂等算法。这里仅提供一种递归实现的方法。
用C语言实现用循环和递归算法求斐波那契额数列的前 10 项
循环实现:
```c
#include <stdio.h>
int main() {
int n = 10;
int i, t1 = 0, t2 = 1, nextTerm;
printf("Fibonacci Series: ");
for (i = 1; i <= n; ++i) {
printf("%d, ", t1);
nextTerm = t1 + t2;
t1 = t2;
t2 = nextTerm;
}
return 0;
}
```
递归实现:
```c
#include <stdio.h>
int fibonacci(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
int main() {
int n = 10;
int i;
printf("Fibonacci Series: ");
for (i = 0; i < n; ++i) {
printf("%d, ", fibonacci(i));
}
return 0;
}
```
阅读全文