【c语言】斐波那契数列

斐波那契数列

 

1.使用循环实现

#include <stdio.h>
int Fabio(int n)
{
int f1 = 1;
int f2 = 1;
int f3;
if(n==1||n==2)
return 1;
else
{
for(int i=3;i<=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
}
}
return f3;
}
int main()
{
for(int i=1;i<=14;i++)
{
printf("%d  ",Fabio(i));
}

}

 

2.利用递归实现

 

### C语言实现斐波那契数列的方法及代码示例 以下提供了几种常见的C语言实现斐波那契数列的代码示例,包括递归方法、非递归方法以及基于循环的方式。 #### 1. 递归实现 递归方法是一种直接按照斐波那契数列定义进行编程的方式。虽然代码简洁,但效率较低,尤其是在计算较大的项时。 ```c #include <stdio.h> int fib(int n) { if (n <= 2) { return 1; } else { return fib(n - 1) + fib(n - 2); } } int main() { int n, result; printf("请输入要计算的斐波那契数列:\n"); scanf("%d", &n); result = fib(n); printf("第%d项的值为:%d\n", n, result); return 0; } ``` 上述代码通过递归调用函 `fib` 来计算斐波那契数列的值[^5]。 #### 2. 非递归实现 非递归方法利用迭代的思想,避免了递归带来的重复计算问题,效率较高。 ```c #include <stdio.h> int fib(int n) { if (n < 1) { return -1; } if (n == 1 || n == 2) { return 1; } int f1 = 1, f2 = 1, f3 = 2; for (int i = 3; i <= n; ++i) { f3 = f1 + f2; f1 = f2; f2 = f3; } return f3; } int main() { int n, result; printf("请输入要计算的斐波那契数列:\n"); scanf("%d", &n); result = fib(n); printf("第%d项的值为:%d\n", n, result); return 0; } ``` 此代码通过迭代计算斐波那契数列的值,避免了递归的性能开销[^2]。 #### 3. 循环输出斐波那契数列 如果需要输出整个斐波那契数列,可以使用循环结构来实现。 ```c #include <stdio.h> int main() { int N, i; double f[1000] = {1, 1}; printf("请输入需要计算的斐波那契数列:\n"); scanf("%d", &N); for (i = 2; i < N; i++) { f[i] = f[i - 2] + f[i - 1]; } for (i = 0; i < N; i++) { if (i % 5 == 0) { printf("\n"); } printf("%.lf\t", f[i]); } printf("\n"); return 0; } ``` 该代码通过组存储斐波那契数列的每一项,并按行输出结果[^1]。 ### 总结 以上三种方法分别适用于不同的场景: - **递归**适合理解算法逻辑,但不推荐用于大规模计算。 - **非递归**和**循环输出**更适合实际应用,特别是在需要高效计算的情况下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值