C语言求斐波那契数(不考虑溢出)(递归+迭代)

求第n个斐波那契数,斐波那契数事前两个数字相加等于第三个数(1 1 2 3 5 8 13 21 34 55...)

方法一:递归法,这个数列第n个数是前两个数相加之和,我们很容易想到用递归的方法来实现。但是这种方法按照从后往前的方式进行,每个比n小的数相加都需要执行多次,计算地很慢。我们就可以在考虑一下迭代的方法。

cs 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

//求第n个斐波那契数,斐波那契数事前两个数字相加等于第三个数(1 1 2 3 5 8 13 21 34 55...)
int Fib(int n)
{
	if (n >= 3)
	{
		return Fib(n - 1) + Fib(n - 2);
	}
	else
	{
		return 1;
	}
}

int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("%d \n",Fib(n));
	return 0;
}

方法二:迭代法,按照从小到大的顺序进行,一个数据只计算一次,运算相对较快。

cs 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

//迭代
int Fib(int n)
{
	int a = 1;
	int b = 1;
	int c = 0;
	while (n >= 3)
	{
		c = a+b;
		a = b;
		b = c;
		n--;
	}
	return c;
}

int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("%d \n", Fib(n));
	return 0;
}
相关推荐
larance1 分钟前
方差和标准差
人工智能·算法·机器学习
这是个栗子9 分钟前
前端开发中的常用工具函数(二)(持续更新中...)
开发语言·前端·javascript
苦藤新鸡14 分钟前
38.交换二叉树中所有的左右节点
开发语言·前端·javascript
TracyCoder12322 分钟前
LeetCode Hot100(3/100)——128.最长连续序列
算法·leetcode
2501_9445215938 分钟前
Flutter for OpenHarmony 微动漫App实战:主题配置实现
android·开发语言·前端·javascript·flutter·ecmascript
kk”38 分钟前
C++智能指针
开发语言·c++
MX_935940 分钟前
以配置非自定义bean来演示bean的实例化方式
java·开发语言·后端
Piar1231sdafa43 分钟前
【目标检测】竹林与杂草识别_YOLOv26改进算法研究
算法·yolo·目标检测
EmbedLinX1 小时前
一文理解后端核心概念:同步/异步、阻塞/非阻塞、进程/线程/协程
linux·服务器·c语言·网络
风筝在晴天搁浅1 小时前
hot100 543.二叉树的直径
算法·深度优先