当前位置: 首页 > article >正文

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

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

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

#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;
}

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

#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;
}


http://www.kler.cn/a/428536.html

相关文章:

  • 25/1/22 算法笔记<ROS2> TF变换
  • 一文大白话讲清楚webpack基本使用——11——chunkIds和runtimeChunk
  • 快速学习GO语言总结
  • 如何实现亿级用户在线状态统计?
  • 【Elasticsearch】 Ingest Pipeline `processors`属性详解
  • python转转商超书籍信息爬虫
  • mobi文件转成pdf
  • App自动化测试用例的录制与编写
  • 服务器被ping的风险,如何开启和禁止ping?
  • 国内有什么AI软件可供使用
  • k8s 之 StatefulSet
  • 力扣100题--移动零
  • C++打造局域网聊天室第四课: 动态启用或禁用窗口及MFC消息映射机制
  • QT 中 QString 转换为 Unicode 和 ASCII 的方法
  • 【JavaEE 初阶】⽹络编程套接字
  • 【Linux】Git
  • 运输层4——TCP格式(重点!)
  • 24/12/8 算法笔记<强化学习> AC:actor-critic
  • 安装部署PowerDNS--实现内网DNS解析
  • AI视频玩法:动物融合技术解析
  • 智驾端到端时代,何以「奔驰」?
  • 图神经网络代码学习—基本使用与分类任务
  • JWT 原理与使用
  • 高阶数据结构--B树B+树实现原理B树模拟实现--Java
  • Arthas采集火焰图
  • esp-idf基于vscode插件开发环境搭建