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;
}
相关推荐
Hello World . .16 小时前
Linux:线程(thread)
linux·开发语言·vscode
小O的算法实验室16 小时前
2025年JIM SCI2区,基于Q学习多目标粒子群算法+节能型分布式流水车间调度,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
YunchengLi16 小时前
【计算机图形学中的四元数】1/2 Quaternions for Computer Graphics
人工智能·算法·机器学习
良木生香16 小时前
【C++初阶】C++入门相关知识(1):C++历史 & 第一个C++程序 & 命名空间
c语言·开发语言·c++
重生之后端学习16 小时前
108. 将有序数组转换为二叉搜索树
数据结构·算法·深度优先
诸葛务农16 小时前
点云配准在人形机器人中的应用:ICP算法(1)
算法·机器学习·机器人
黎雁·泠崖16 小时前
【魔法森林冒险】11/14 战斗系统(二):多波战斗与BOSS战
java·开发语言
csbysj202018 小时前
PHP Mail - 发送邮件的最佳实践指南
开发语言
jdbcaaa18 小时前
Go 语言 runtime 包的使用与注意事项
开发语言·后端·golang·runtime
ZHOUPUYU20 小时前
PHP 8.3网关优化:我用JIT将QPS提升300%的真实踩坑录
开发语言·php