菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数k,要求菲波那契数列中第k个数是多少。C语言求解
时间: 2024-12-17 10:41:51 浏览: 19
Java编程50题
4星 · 用户满意度95%
斐波那契数列是一个经典的动态规划问题,可以用循环或者递归的方式解决。以下是使用C语言编写的一个函数,用于计算第k个斐波那契数:
```c
#include <stdio.h>
int fibonacci(int k) {
if (k <= 0) {
printf("Invalid input! k should be a positive integer.\n");
return -1; // 或者抛出错误,取决于需求
}
if (k == 1 || k == 2)
return 1;
int fib[k+1]; // 用数组存储,防止重复计算
fib[1] = fib[2] = 1;
for (int i = 3; i <= k; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
return fib[k];
}
int main() {
int k;
printf("Enter the position of the Fibonacci number you want to find: ");
scanf("%d", &k);
int result = fibonacci(k);
if (result != -1)
printf("The %dth Fibonacci number is: %d\n", k, result);
return 0;
}
```
在这个程序中,我们首先检查输入的k是否有效。然后创建一个大小为k+1的数组,通过循环逐个计算并存储斐波那契数。最后返回第k个数。
阅读全文