c语言用堆栈实现斐波那契数列求值
时间: 2023-08-10 09:10:59 浏览: 124
用C 语言实现斐波那契数列
下面是使用堆栈实现斐波那契数列求值的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int stack[MAX];
int top = -1;
void push(int data) {
if (top == MAX - 1) {
printf("Stack Overflow\n");
return;
}
stack[++top] = data;
}
int pop() {
if (top == -1) {
printf("Stack Underflow\n");
exit(1);
}
return stack[top--];
}
int fib(int n) {
push(n);
while (top != -1) {
n = pop();
if (n == 0 || n == 1) {
push(1);
} else {
push(n - 1);
push(n - 2);
}
}
return pop();
}
int main() {
int n;
printf("Enter the value of n: ");
scanf("%d", &n);
printf("The %d-th Fibonacci number is: %d\n", n, fib(n-1));
return 0;
}
```
在这个实现中,我们使用了一个堆栈来存储需要计算的斐波那契数列的项。我们首先将要计算的项压入堆栈,然后不断地从堆栈中弹出元素进行计算。如果弹出的元素是0或1,则将1压入堆栈中,否则将该元素的前两项压入堆栈中。当堆栈为空时,我们弹出堆栈中的最后一个元素,即为所求的斐波那契数列的项。
阅读全文