已知斐波那契数列 F n =F n−1 +F n−2 (n>=3),F 1 =1,F 2 =1 求解该数列的第n项,结果对998244353取模。写一个c语言程序
时间: 2024-10-25 09:15:01 浏览: 58
在C语言中,你可以使用动态规划的方式来解决这个问题,避免了递归带来的性能损耗。下面是一个简单的C程序,用于计算斐波那契数列的第n项对998244353取模的结果:
```c
#include <stdio.h>
// 定义取模常量
#define MOD 998244353
// 动态规划函数
int fibonacci(int n) {
if (n <= 0) return 0;
if (n == 1 || n == 2) return 1; // F(1) 和 F(2) 的特殊情况
int fib[n+1]; // 初始化一个大小为n+1的数组存储斐波那契数
fib[0] = 1;
fib[1] = 1;
for (int i = 2; i <= n; ++i) {
fib[i] = (fib[i-1] + fib[i-2]) % MOD; // 根据斐波那契数列的定义计算并取模
}
return fib[n];
}
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
int result = fibonacci(n);
printf("斐波那契数列的第%d项对998244353取模后的结果是:%d\n", n, result);
return 0;
}
```
在这个程序中,我们首先检查基本情况,然后初始化数组`fib[]`来存储斐波那契数列的前几项,并通过循环迭代计算出第n项的值。最后返回计算结果。
阅读全文