C语言求斐波那契数列的第n项。 斐波那契数列:1,1,2,3,5,8,13..........。这个数列的特点是前两项为1,从第三项开始,每项都是前两项的和 要求:编写一个函数f(n),求斐波那契数列第n项。
时间: 2024-12-08 18:24:48 浏览: 23
在C语言中,你可以使用递归或迭代的方式来计算斐波那契数列的第n项。以下是递归版本的函数实现:
```c
#include <stdio.h>
// 递归函数计算斐波那契数列的第n项
long long fibonacci_recursive(int n) {
if (n <= 0) {
printf("Invalid input! Please enter a positive integer.\n");
return 0;
} else if (n == 1 || n == 2) {
return 1;
} else {
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2);
}
}
int main() {
int n;
printf("Enter the position (n) to find in Fibonacci series: ");
scanf("%d", &n);
long long result = fibonacci_recursive(n);
printf("The %dth Fibonacci number is: %lld\n", n, result);
return 0;
}
```
然而,由于递归会重复计算很多相同的值,效率较低。如果你想要提高效率,可以使用迭代方法:
```c
#include <stdio.h>
// 迭代法计算斐波那契数列的第n项
long long fibonacci_iterative(int n) {
if (n <= 0) {
printf("Invalid input! Please enter a positive integer.\n");
return 0;
}
long long fib[n + 1];
fib[0] = fib[1] = 1;
for (int i = 2; i <= n; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
}
return fib[n];
}
int main() {
int n;
printf("Enter the position (n) to find in Fibonacci series: ");
scanf("%d", &n);
long long result = fibonacci_iterative(n);
printf("The %dth Fibonacci number is: %lld\n", n, result);
return 0;
}
```
阅读全文