c语言斐波那契数列第n项值
时间: 2023-11-22 15:48:41 浏览: 217
以下是两种C语言实现斐波那契数列第n项值的方法:
1.递归法
```c
#include <stdio.h>
int Fibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return Fibonacci(n-1) + Fibonacci(n-2);
}
}
int main() {
int n;
printf("请输入n的值:");
scanf("%d", &n);
printf("斐波那契数列的第%d项为:%d\n", n, Fibonacci(n));
return 0;
}
```
2.数组法
```c
#include <stdio.h>
int Fibonacci(int n) {
int arr[40] = {0, 1};
for (int i = 2; i <= n; i++) {
arr[i] = arr[i - 1] + arr[i - 2]; }
return arr[n];
}
int main() {
int n;
printf("请输入n的值:");
scanf("%d", &n);
printf("斐波那契数列的第%d项为:%d\n", n, Fibonacci(n));
return 0;
}
```
相关问题
c语言斐波那契数列第n项对998244353求模
在C语言中,计算斐波那契数列第n项对于998244353这个素数取余操作通常可以使用矩阵快速幂算法,这种方法比直接递归或者迭代更有效率。矩阵快速幂的基本思想是利用指数运算的性质,通过分治策略将大指数问题转化为小指数问题。
以下是使用C语言实现的一个简化版的矩阵快速幂函数以及计算斐波那契数列第n项对998244353取模的方法:
```c
#include <stdio.h>
#define MOD 998244353
// 定义矩阵乘法函数
void multiply(int F[2][2], int M[2][2]) {
int x = (F[0][0] * M[0][0] + F[0][1] * M[1][0]) % MOD;
int y = (F[0][0] * M[0][1] + F[0][1] * M[1][1]) % MOD;
int z = (F[1][0] * M[0][0] + F[1][1] * M[1][0]) % MOD;
int w = (F[1][0] * M[0][1] + F[1][1] * M[1][1]) % MOD;
F[0][0] = x;
F[0][1] = y;
F[1][0] = z;
F[1][1] = w;
}
// 计算矩阵的快速幂
void matrixPow(int F[2][2], int n) {
if (n == 1)
return;
matrixPow(F, n / 2);
multiply(F, F);
if (n % 2 != 0)
multiply(F, initialMatrix);
}
// 初始化初始矩阵,用于生成斐波那契序列
int initialMatrix[2][2]={{1,1},{1,0}};
int fibonacciMod(int n) {
int F[2][2] = {{1, 1}, {1, 0}};
matrixPow(F, n - 1); // 因为我们要的是第n项,所以减去1
return F[0][0];
}
int main() {
int n;
printf("请输入n: ");
scanf("%d", &n);
printf("斐波那契数列第%d项对998244353取模的结果是: %d\n", n, fibonacciMod(n));
return 0;
}
```
在这个代码中,`fibonacciMod`函数首先初始化了一个表示斐波那契数列生成矩阵的2x2数组,然后通过矩阵快速幂来计算其n次方,得到的就是第n项除以998244353的余数。
c语言求斐波那契数列第n项
以下是用 C 语言实现求斐波那契数列第n项的代码:
```c
#include <stdio.h>
// 求斐波那契数列的第n项
int fibonacci(int n)
{
if (n <= 0)
return 0;
else if (n == 1)
return 1;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main()
{
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("斐波那契数列的第%d项为:%d\n", n, fibonacci(n));
return 0;
}
```
在这个程序中,我们使用递归的方式来求解斐波那契数列的第n项。在递归函数中,如果n小于等于0,我们返回0;如果n等于1,我们返回1;否则我们返回前两项的和。在主函数中,我们通过scanf函数获取用户输入的n,然后调用fibonacci函数来求解斐波那契数列的第n项。最后,我们输出结果。
阅读全文