递归和非递归分别实现求第n个斐波那契数

本文详细介绍了使用递归和非递归(循环)两种方法实现斐波那契数列的计算过程。通过C语言代码演示了如何通过递归调用自身函数来计算斐波那契数,以及如何通过循环迭代来避免递归带来的大量重复计算,提高效率。

大多教科书中都用此题来讲述递归的解决方式可见其重要性,首先要明白什么是斐波那锲数,递归即每次将这个数的前一位和前一位的前一位传入函数进行计算,代码和逻辑方面都很好理解,下面我们用递归和非递归(循环)两种方法实现

代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int Fib1(int n) //递归的方法
{
if (n <= 2)
return 1;
else
return Fib1(n - 1) + Fib1(n - 2);
}
int Fib2(int n) //非递归的方法
{
int i = 0;
int f1 = 1;
int f2 = 1;
int f3 = 0;
if (n <= 2) //前两个数字都是1返回1即可
{
return 1;
}
else
{
for (i = 3; i < n; i++) //循环交换值来输出第n个斐波那锲数
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
}

}
int main()
{
int n = 0;
printf("请输入你要找哪个数字 \n");
scanf("%d", &n);
int fib1 = Fib1(n);
printf("%d\n", fib1);
int fib2 = Fib2(n);
printf("%d\n", fib2);
system("pause");
return 0;
}

转载于:https://blog.51cto.com/14239789/2377692

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值