c语言用栈求斐波那契数列
时间: 2023-11-17 12:01:20 浏览: 260
用C 语言实现斐波那契数列
栈是一种后进先出(Last In First Out,LIFO)的数据结构,可以用来实现递归函数的非递归调用。下面是使用栈来求解斐波那契数列的C语言代码:
```c
#include <stdio.h>
#define MAXSIZE 100
int fib(int n) {
int stack[MAXSIZE], top = -1;
int a = 1, b = 1, c;
if (n <= 2) {
return 1;
}
stack[++top] = b;
stack[++top] = a;
while (top >= 0) {
a = stack[top--];
b = stack[top--];
c = a + b;
n--;
if (n == 0) {
return c;
}
stack[++top] = c;
stack[++top] = b;
}
}
int main() {
int n;
printf("请输入要求的斐波那契数列的项数:");
scanf("%d", &n);
printf("第%d个斐波那契数字是%d", n, fib(n));
return 0;
}
```
该代码使用了一个数组作为栈,将递归函数的参数和局部变量都保存在栈中,然后通过循环模拟递归的过程,直到得到结果。这种方法可以避免递归调用带来的函数调用开销,提高程序的效率。
阅读全文