c 语言写斐波那契数列第n项
时间: 2024-11-05 16:26:05 浏览: 133
在C语言中,我们可以使用递归或者循环的方式来计算斐波那契数列的第n项。以下是两种常见的实现方法:
### 1. 使用递归 (递归法)
```c
#include <stdio.h>
// 斐波那契数列的递归函数
int fibonacci(int n) {
if (n <= 1) // 基线条件
return n;
else
return fibonacci(n - 1) + fibonacci(n - 2); // 递归调用
}
int main() {
int n;
printf("Enter the value of n: ");
scanf("%d", &n);
// 防止栈溢出,当n过大时
if (n <= 0 || n > 46) {
printf("Invalid input! Fibonacci sequence can be calculated for up to 46th term.\n");
} else {
printf("Fibonacci number at position %d is: %d\n", n, fibonacci(n));
}
return 0;
}
```
### 2. 使用循环 (迭代法)
```c
#include <stdio.h>
// 使用循环计算斐波那契数列
void fibonacci_iterative(int n) {
int a = 0, b = 1, temp;
if (n <= 0)
return;
for (int i = 0; i < n; ++i) {
printf("%d ", a);
temp = a;
a = b;
b = temp + b;
}
}
int main() {
int n;
printf("Enter the value of n: ");
scanf("%d", &n);
fibonacci_iterative(n);
return 0;
}
```
在这两种方法中,递归方法适合小规模的问题,但对于大规模的n值,因为递归会有大量的重复计算,效率较低;而迭代方法更高效,因为它避免了不必要的重复。
阅读全文