每日一题:斐波那契数列

news2024/9/21 14:24:49

每日一题:斐波那契数列

我们先来看一下斐波那契数列的定义:

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*),在现代物理、准晶体结构、化学等领域,斐波那契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波那契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

更加详细的信息请看链接:斐波那契数列_百度百科 (baidu.com)

简单来说就是这样一个数列:

image-20221204185419136

规律:前两项为1,往后数字依次是该数字前两项之和。

我们来看今天的问题:

求斐波那契(Fibonacci)数列的第 n 项,题目牛客网链接在这儿:求斐波那契(Fibonacci)数列的第 n 项笔试题牛客网 (nowcoder.com)

此题应有两种解法并且各有特色:方法有递归方式解决和迭代(循环)方式来解决。但是当你用递归方法第40多个或者第50个斐波那契数你是算不出来的,关于这两种方法的区别在时间复杂度的区别在博客中详细写过,详细可以参考:C语言底层逻辑剖析函数篇(其三),函数递归与迭代超详解,斐波那契数列递归经典例题,汉诺塔问题,青蛙跳台阶

递归:

//每日一题
//求第n个斐波那契数
#include<stdio.h>
//递归写法
int Fib(int n)
{
    if(n==0)
        return 0;
	else if (n <= 2)
		return 1;
	else
		return Fib(n - 1) + Fib(n - 2);
}
int main()
{
	int n = 0;
	int flag = 1;
	while (flag)
	{
		scanf("%d", &n);
		//判断输入的合法性
		if (n > 0)
		{
			flag = 0;
		}
		else
		{
			printf("输入错误\n");
		}
	}
	//输出第n个斐波那契数
	printf("第%d个斐波那契数为%d\n", n, Fib(n));
	return 0;
}

循环:

//每日一题
//求第n个斐波那契数
#include<stdio.h>
//迭代写法
int Fib(int n)
{
	int a = 1;
	int b = 1;
	int c = 1;
    if(n==0)
    {
        return 0;
    }
	while (n > 2)
	{
		c = a + b;
		a = b;
		b = c;
		n--;
	}
	return c;
}
int main()
{
	int n = 0;
	int flag = 1;
	while (flag)
	{
		scanf("%d", &n);
		//判断输入的合法性
		if (n > 0)
		{
			flag = 0;
		}
		else
		{
			printf("输入错误\n");
		}
	}
	//输出第n个斐波那契数
	printf("第%d个斐波那契数为%d\n", n, Fib(n));
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/61620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux进程调度(二)——主动调度

目录 分析__schedule() 第一步&#xff1a; 第二步&#xff1a; pick_next_task的实现如下&#xff1a; 第三步&#xff1a; 进程上下文切换 内存空间的切换&#xff1a; 寄存器和栈的切换switch_to 指令指针的保存与恢复 总结 进程的调度分为两种方式&#xff0c;本篇…

MOOC——多项式加法(5分)好难!

1.多项式加法&#xff08;5分&#xff09; 题目内容&#xff1a; 一个多项式可以表达为x的各次幂与系数乘积的和&#xff0c;比如&#xff1a; 2x63x512x36x20 现在&#xff0c;你的程序要读入两个多项式&#xff0c;然后输出这两个多项式的和&#xff0c;也就是把对应的幂…

java GUI 实现的socket在线聊天系统项目源码运行教程

大家好&#xff0c;今天给大家演示一下一个简单的图形界面的聊天程序&#xff0c;上次我们演示的是Java实现的群聊程序&#xff0c;还可以发送文件&#xff0c;今天这个小程序只能聊天&#xff0c;不能发文件&#xff0c;功能非常简单&#xff0c;可在局域网内实现互相聊天&…

html当当书网站 html网上在线书城 html在线小说书籍网页 当当书城网页设计

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

社区系统项目复盘-7

文章目录Spring Security权限控制置顶、加精、删除Redis高级数据类型网站数据统计使用Spring Security进行权限控制&#xff0c;对登录检查功能进行了重写。对不同的登录账号授予不同的权限&#xff0c;实现了置顶、加精、删除功能。使用Redis高级数据类型HyperLogLog和Bitmap实…

2-分类问题 SVM 核函数

目录 一&#xff0c;核函数的引入 二&#xff0c;核函数的定义 三&#xff0c;核函数介绍&#xff1a; 四&#xff0c;核函数总结&#xff1a; 一&#xff0c;核函数的引入 世界上本来没有两个完全一样的物体&#xff0c;对于所有的两个物体&#xff0c;我们可以通过增加维…

ES6 Reflect

前言 此文总结了Reflect对象的部分语法&#xff0c;对比了与Object方法的差异性&#xff0c;希望对你有用。 语法 Reflect与Math类似&#xff0c;都是JavaScript内置对象&#xff0c;提供了工具方法。 typeof Reflect // objectget Reflect.get(target, property, receiver) …

冷热电气多能互补的微能源网鲁棒优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Linux——VIM编辑器(详细)

目录 一、基本简介 1.1 基本简介 1.2 我们怎么使用终端进入到桌面&#xff1f; 1.3 模式间转换 二、一般模式 2.1 操作指令 2.2 什么情况下是一般模式呢&#xff1f; 2.3 怎么进行光标的快速移动&#xff1f; 2.4 复制粘贴操作 2.5 删除操作 三、编辑模式 四、命令行…

Java项目:SSM教师师资管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目包含管理员与教师两种角色&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员角色登录,教师管理,教师授课管理,审批教师的项目开…

【前沿技术RPA】 一文了解UiPath 文件与文件夹自动化功能

&#x1f40b;作者简介&#xff1a;博主是一位.Net开发者&#xff0c;同时也是RPA和低代码平台的践行者。 &#x1f42c;个人主页&#xff1a;会敲键盘的肘子 &#x1f430;系列专栏&#xff1a;UiPath &#x1f980;专栏简介&#xff1a;UiPath在传统的RPA&#xff08;Robotic…

[YOLOv7/YOLOv5系列改进NO.40]融入适配GPU的轻量级 G-GhostNet

文章目录前言一、解决问题二、基本原理三、​添加方法四、总结前言 作为当前先进的深度学习目标检测算法YOLOv7&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系列…

头歌计算机组成原理汉字字库存储芯片扩展实验

全部答案点击底部 <?xml version"1.0" encoding"UTF-8" standalone"no"?> <project source"2.15.0.2.exe" version"1.0"> This file is intended to be loaded by Logisim http://logisim.altervista.org &…

如何在 Spring 或 Spring Boot 中使用键集分页

介绍 在本文中&#xff0c;我将向您展示如何在 Spring 或 Spring Boot 中使用键集分页技术。 虽然 Spring DataPagingAndSortingRepository提供的基于偏移量的默认分页在许多情况下很有用&#xff0c;但如果您必须迭代大型结果集&#xff0c;那么键集分页或查找方法技术可以提…

使用awk聚合和排序

用awk聚合和排序 文章目录用awk聚合和排序一、需求1.1 源文件格式1.2 需求二、用awk实现2.1 写法2.2 效果一、需求 1.1 源文件格式 一份csv文件&#xff08;默认逗号分隔&#xff09;一共五列&#xff0c;其中一列是用户名文件名&#xff1a;日志文件.csv type日记idusernam…

Android使用ListView,DrawerLayout实现简单注册功能界面

1.效果展示 2.实现 1.主页面activity_main.xml 主页面就是简单的几个TextView和EditText以及单选框组成的一个注册表单。 <?xml version"1.0" encoding"utf-8"?> <LinearLayoutxmlns:android"http://schemas.android.com/apk/res/andro…

[附源码]JAVA毕业设计口腔医院网站(系统+LW)

[附源码]JAVA毕业设计口腔医院网站&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

java通过lock实现同步锁

这里我们是一个卖票的演示代码 其实 同步锁 远不止一个synchronized 它本身有一个 加上锁 和释放锁的过程 为了 让我们更好的理解这个过程 JDK5之后 为我们提供了一个单独的锁工具 lock lock是一个接口 他提供了 synchronized 方法 和 更广泛的语句操作 lock方法 获得锁 unl…

【C语言】函数传参与指针理解

文章目录指针与变量注意指针的本质指针和变量的用法函数与传参传变量与传指针的区别传变量与传指针的时机指针与变量 大三&#xff0c;但是C语言。目标&#xff1a;高屋建瓴&#xff0c;深入浅出。 注意 所有人在最开始学C语言的时候&#xff0c;老师都会和你说指针指向一个…

[附源码]JAVA毕业设计课程答疑系统(系统+LW)

[附源码]JAVA毕业设计课程答疑系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…