14天阅读挑战赛14天阅读挑战赛
努力是为了不平庸~

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

学习日记

目录

学习日记

一、斐波那契数列的概念

二、斐波那契的复现

1、递归实现

2、迭代实现

3、总结

三、兔子问题


一、斐波那契数列的概念

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。

斐波那契数列指的是这样一个数列:

0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711……

它的规律是:这个数列从第 3 项开始,每一项都等于前两项之和。

在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*),显然,斐波那契数列是一个线性递推数列。

我们给出斐波那契数列的推导公式:

二、斐波那契的复现

常用的实现斐波那契数列的方法分为两大类:递归和循环。

1、递归实现

#C语言版本

#include <stdio.h>
int F(int n) //斐波那契数列函数 递归形式
{if(n == 0) //初始化return 0;if(n == 1 || n == 2)return 1;return F(n-1) + F(n-2);  //如果n != 1 && n != 2 进行递归运算
}int main()
{int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);printf("%d\n", F(n));}return 0;
}

#python版本

import timedef Fibonacci(i):if i==0:return 0elif i==1:return 1else:return Fibonacci(i-1)+Fibonacci(i-2)
def main(): a=time.time()for i in range(1,101):print(Fibonacci(i))b=time.time()print("running time:%s Seconds"%(b-a))
main()

2、迭代实现

#C语言版本

#include <stdio.h>
int fibonacci(int n) //定义斐波那契函数
{if(n == 0)    //定义初始值return 0;   if(n == 1 || n == 2)    return 1;int a=1,b=1,c=0;    //定义初始值
//用一个for循环,a、b分别为前两项,c为前两项之和,得到c后进行交换更新a、b的值,进行n次交换即可。for(int i=3;i<=n;i++)    //更新操作{c = a+b;a = b;b = c;}return c;  //c即为结果输出
}int main()
{int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);printf("%d\n", fibonacci(n));}return 0;
}

#python版本

import time
def fib(n):if n<=0:return 0if n == 1:return nfirst, second, third = 0, 1, 0for i in range(2, n+1):third = first + secondfirst = secondsecond = thirdreturn third
def main():a=time.time()for i in range(1,101):print(fib(i))b=time.time()print("%s"%(b-a))
main()

3、总结

因为递归算法存在着大量的重复计算,在N趋近于较大值时,可能会造成内存溢出或超时的情况,又因为使用迭代算法的情况下同样可以实现计算斐波那契数列第N项的功能,所以在N值很大时我们优先使用迭代算法。

三、兔子问题

题目描述

这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。按此规律,假设没有兔子死亡,第一个月有一对刚出生的小兔子,问第n个月有多少对兔子?

输入:月数n(1<=n<=44)。                                输出:输出第n个月有多少对兔子。

样例输入 3                                                            样例输出2

#递归

#include<stdio.h>int fib(int n){if(n==1||n==2)return 1;elsereturn fib(n-1)+fib(n-2);}int main(){int n ;scanf("%d",&n);printf("%d",fib(n));}

#循环

 #include<stdio.h>                     int main (){int i,n,item,n1=1,n2=1;scanf("%d",&n);if(n==1||n==2)item=1;for(i=3;i<=n;i++){item=n1+n2;n2=n1;n1=item;}printf("%d",item);}

斐波那契问题(兔子问题)相关推荐

  1. 斐波那契数列-----兔子繁殖问题

    斐波那契数列-----兔子繁殖问题 斐波那契数列又因数学家莱昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列". 一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个 ...

  2. 斐波那契数列---兔子繁殖题

    斐波那契数列-兔子繁殖题 如果说兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来.假设所有兔子都不会死去,能够一直干下去,那么一年以后可决繁殖多少对兔子呢? 斐波那契数列的迭代实现 ...

  3. OJ1055: 兔子繁殖问题(C语言计算斐波那契数列/“兔子数列”)

    题目描述 这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子.小兔子长到第3个月后每个月又生一对兔子.按此规律,假设没有兔 ...

  4. 斐波那契生兔子问题(一月大兔子生a对,二月大兔子生b对,三月大兔子生c对。。。)

    现提出一个问题:一对兔子一个月大时可生育a对兔子,两个月大的兔子生育b对兔子,三个月大及以后的兔子生c对兔子.假设兔子不死,现有1对兔子,问N个月后有多少只兔子. 看起来这是一个递推数列的问题,要注意 ...

  5. 斐波那契数列 兔子数列

    斐波那契数列:每一个数都等于前两位数之和 又称兔子数列:有一对兔子从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假设所有兔子不死,问每个月的兔子总数为多少? 下面为循环 ...

  6. 斐波那契数列----兔子问题

    前言 2021年/01/07 我TM可太爱学JAVA了.奥里给!!! 简单搞一搞JAVA,今天的内容主要是方法体,用方法体去就解决一些问题: 1.斐波那契数列,以兔子繁殖为例子而引入,故又称为&quo ...

  7. 斐波那契之兔子问题解释

    13世纪意大利数学家斐波那契在他的<算盘书>中提出这样一个问题:有人想知道一年内一对兔子可繁殖成多少对,便筑了一道围墙把一对兔子关在里面.已知一对兔子每一个月可以生一对小兔子,而一对兔子出 ...

  8. 斐波那契数列兔子繁殖问题相关思考

    斐波那契数列的一个典型应用就是兔子繁殖问题. 一.最朴素的兔子繁殖问题就是:有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问第n个月的兔子总 ...

  9. c语言 兔子数列螺线图,经典算法大全51例——2.斐波那契数列(兔子数列)

    经典算法大全51例--2.斐波那契数列 算法目录合集 地址 说明 题目 原理分析 代码实现--Java 相关题目其他变形: 1.爬楼梯(来源:力扣LeetCode) 2.兔子成熟期拉长 官方题解 分析 ...

  10. 每日C语言代码(The third day)——斐波那契(兔子数列)

    今天来讲一个很常见的代码--斐波那契数列,虽然有很多人都发布了,但是我这次想要做一个比较深层次的分析! 编程求fibonacci数列:1,1,2,3,5,8--的前n个数. 首先我们先来解析一下这个数 ...

最新文章

  1. 【学习摘录】推荐算法
  2. NeurIPS 2018 | 如何用循环关系网络机智地解决数独类关系推理任务?
  3. jackson的jar包下载
  4. NumericUpDown 控件输入限制小数位
  5. SpringBoot-MyBatis
  6. 在tomcat服务器部署finereport
  7. 史蒂芬.霍金:警惕政府“人工智能军备竞赛”
  8. dudu注意:这个可能是bug吧?
  9. Python Numpy中reshape函数参数-1的含义
  10. 基于C#的学生选课管理系统
  11. 一般线性模型和混合线性模型_从零开始的线性混合模型
  12. UML建模与软件开发设计(三)——UML常用开发工具
  13. 请停止无效努力,让你的付出都能有所收获
  14. 红警游戏开源代码带给我们的震撼
  15. pytorch入门教程(一):Tensor###tensor好好好####
  16. Tempest之Testr使用
  17. 定点数一位乘法之Booth(布斯)算法
  18. 关于客户机服务器与微内核结构操作系统,第1章 操作系统概述1
  19. 基于Python实现的二手车价格预测
  20. 笨鸟Linux学习连载之 - 万事开头难

热门文章

  1. 好看的table css样式
  2. Autofill简单使用
  3. 用于机器学习的 NumPy(ML)
  4. 移动开发的项目管理心得
  5. MapX 控件在C# 中的应用 (一)
  6. Rosalind第八题:将RNA转化成蛋白质
  7. 剖析 Android ART Runtime (2) – dex2oat
  8. 当GOOGLE搜索结果的链接无法打开时
  9. Linux usleep不准问题排查
  10. 干货满满 | 不容错过的数据科学入门数学指南