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;
}
相关推荐
lihao lihao14 小时前
linux线程
java·开发语言·jvm
满怀冰雪14 小时前
第13篇-栈算法入门-括号匹配-表达式与单调栈基础
java·算法
TCW112114 小时前
AI底层系列:用C++实现线性代数的公式推导与算法设计-基础篇-5.矩阵方程
人工智能·线性代数·算法
叫我:松哥14 小时前
基于机器学习和flask的体育健身风险智能分析系统,系统集成DeepSeek、聚类算法、分类算法等,准确率达90%
人工智能·python·神经网络·算法·机器学习·flask·聚类
码云骑士14 小时前
03-Python可变对象与不可变对象(下)-深浅拷贝的底层真相
开发语言·python
wabs66614 小时前
关于动态规划【0-1背包思想在实际问题中是怎么转化的?】
算法·动态规划
sycmancia14 小时前
Qt——自定义模型类
开发语言·qt
阿文的代码库14 小时前
欧拉回路与欧拉路径的算法流程演示
算法
MATLAB代码顾问14 小时前
Python数据分析项目实战:销售数据仪表盘
开发语言·python·数据分析