用c语言分别使用递归算法和非递归算法定义一个函数,输出斐波那契数列(1,1,2,3,5,8..........)的前n项的值,并在主函数中进行测试,输出执行结果。
时间: 2024-05-02 14:19:43 浏览: 54
可以的,以下是C语言的递归和非递归算法实现斐波那契数列的代码:
递归算法:
```c
#include <stdio.h>
int fibonacci(int n) {
if (n <= 2) {
return 1;
}
else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
int main() {
int n, i;
printf("请输入n:");
scanf("%d", &n);
printf("斐波那契数列的前%d项为:\n", n);
for (i = 1; i <= n; i++) {
printf("%d ", fibonacci(i));
}
printf("\n");
return 0;
}
```
非递归算法:
```c
#include <stdio.h>
int main() {
int n, i;
int fib[100];
printf("请输入n:");
scanf("%d", &n);
printf("斐波那契数列的前%d项为:\n", n);
if (n <= 0) {
return 0;
}
else if (n == 1) {
fib[0] = 1;
printf("%d ", fib[0]);
}
else {
fib[0] = 1;
fib[1] = 1;
printf("%d %d ", fib[0], fib[1]);
for (i = 2; i < n; i++) {
fib[i] = fib[i-1] + fib[i-2];
printf("%d ", fib[i]);
}
}
printf("\n");
return 0;
}
```
执行结果:
```
请输入n:10
斐波那契数列的前10项为:
1 1 2 3 5 8 13 21 34 55
```
那么,接下来有什么问题需要我为您解答呢?