分治与递归-Fibonacci数列兔子问题
裴波那契(Fibonacci leonardo,约1170-1250)是意大利著名数学家。在他的著作《算盘书》中许多有趣的问题,最富成功的问题是著名的“兔子繁殖问题”: 如果每对兔子每月繁殖一对子兔,而子兔在出生后第二个月就有生殖能力,试问一对兔子一年能繁殖多少对兔子?
这个问题会构成一个斐波那契数列
| 月份 | 已有兔子数 | 新增兔子数 | 兔子总数 | 兔子对数 | 新增兔子对数 |
| 1 | 2 | 0 | 2 | 1 | 0 |
| 2 | 2 | 2 | 4 | 2 | 1 |
| 3 | 4 | 2 | 6 | 3 | 1 |
| 4 | 6 | 4 | 10 | 5 | 2 |
| 5 | 10 | 6 | 16 | 8 | 3 |
| 6 | 16 | 10 | 26 | 13 | 5 |
| 7 | 26 | 16 | 42 | 21 | 8 |
因此兔子对数为:1,2,3,5,8,13,21,...在其前加1是斐波那契数列
每次新增兔子数为:0,1,1,2,3,5,8,...,在其前删除0也是斐波那契数列
兔子总对数的斐波那契数列:1,1,2,3,5,8,13,21,...

其中n为月份。
分治与递归-Fibonacci数列兔子问题的更多相关文章
- 18.12.09-C语言练习:兔子繁衍问题 / Fibonacci 数列
题目: 问题解析: 这是典型的/Fibonacci 数列问题.具体这里不赘述. 问题中不论是初始的第1对兔子还是以后出生的小兔子都是从第3个月龄起每个月各生一对兔子. 设n1,n2,n3分别是每个月1 ...
- Python中的函数递归思想,以及对比迭代和递归解决Fibonacci数列
什么是递归?简单的说就是:函数自身调用自身. “普通程序员用迭代,天才程序员用递归” 虽然递归 在运行时会不断出栈压栈,调用底层的寄存器,造成空间上的占用以及时间上的缓慢, 但在一些算法上面仍然是递归 ...
- 详解递归(基础篇)———函数栈、阶乘、Fibonacci数列
一.递归的基本概念 递归函数:在定义的时候,自己调用了自己的函数. 注意:递归函数定义的时候一定要明确结束这个函数的条件! 二.函数栈 栈:一种数据结构,它仅允许栈顶进,栈顶出,先进后出,后进先出.我 ...
- 用Python实现求Fibonacci数列的第n项
1. 背景——Fabonacci数列的介绍(摘自百度百科): 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacc ...
- Fibonacci 数列算法分析
/************************************************* * Fibonacci 数列算法分析 ****************************** ...
- 可变长度的Fibonacci数列
原题目: Write a recursive program that extends the range of the Fibonacci sequence. The Fibonacci sequ ...
- fibonacci 数列及其应用
fibonacci 数列及其延展 fibonacci计算 fibonacci数列是指 0,1,1,2,3,5,8,13,21……这样自然数序列,即从第3项开始满足f(n)=f(n-1)+f(n-2): ...
- 【编程题目】题目:定义 Fibonacci 数列 输入 n,用最快的方法求该数列的第 n 项。
第 19 题(数组.递归):题目:定义 Fibonacci 数列如下:/ 0 n=0f(n)= 1 n=1/ f(n-1)+f(n-2) n=2输入 n,用最快的方法求该数列的第 n 项. 思路:递归 ...
- 青蛙跳台阶(Fibonacci数列)
问题 一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级.求该青蛙跳上一个n 级的台阶总共有多少种跳法. 思路 当n=1时,只有一种跳法,及f(1)=1,当n=2时,有两种跳法,及f(2)=2,当n= ...
随机推荐
- vue基础----过滤器filter
1.用的场景:一个功能在每个组件都能用,而computed虽然有缓存,但不能用在每一个组件,需要的话的每一个都需要写. 2.特点:改变数据的展示形式,不改变原有的形式 分为全局与局部的 <di ...
- 因为我说:volatile 是轻量级的 synchronized,面试官让我回去等通知!
因为我说:volatile 是轻量级的 synchronized,面试官让我回去等通知! volatile 是并发编程的重要组成部分,也是面试常被问到的问题之一.不要向小强那样,因为一句:volati ...
- Netty之缓冲区ByteBuf解读(二)
上篇介绍了 ByteBuf 的简单读写操作以及读写指针的基本介绍,本文继续对 ByteBuf 的基本操作进行解读. 读写指针回滚 这里的 demo 例子还是使用上节使用的. ByteBuf buf = ...
- ffmpeg 使用
ffmpeg 使用 一.介绍 FFmpeg 是视频处理最常用的开源软件,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),视频本身是一个容器,里面包含了视频.音频和字幕等.FFmp ...
- js实践篇:例外处理Try{}catch(e){}
本文转载至:http://blog.csdn.net/ocean20/article/details/7301008 程序开发中,编程人员经常要面对的是如何编写代码来响应错误事件的发生,即例外处理(e ...
- DOM-XSS攻击原理与防御
XSS的中文名称叫跨站脚本,是WEB漏洞中比较常见的一种,特点就是可以将恶意HTML/JavaScript代码注入到受害用户浏览的网页上,从而达到劫持用户会话的目的.XSS根据恶意脚本的传递方式可以分 ...
- JMeter脚本拷贝自动化
方法一:DOC命令拷贝脚本(适合Windows系统) 1.写一段DOC命令(保存为批处理文件copyscript.bat),将本地JMeter脚本拷贝到远程机器上. net use \\<远程机 ...
- 6. concat_ws用法
select CONCAT_WS('-', e.audit_one_name, e.audit_second_name) from t_audit_item_name e where e.id= ...
- uni-app 遮罩模板
1. common新建mask.vue文件. <template> <view> <view class="cpt-mask"> </vi ...
- 浏览器与DNS解析过程
浏览器解析 1.地址栏输入地址后,浏览器检查自身DNS缓存 地址栏输入chrome://net-internals/#dns 查看. 2.浏览器缓存中未找到,那么Chrome会搜索操作系统自身的DNS ...