Fibonacii数列,兔子问题
经过月数
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
幼仔对数
|
1
|
0
|
1
|
1
|
2
|
3
|
5
|
8
|
13
|
21
|
34
|
55
|
89
|
成兔对数
|
0
|
1
|
1
|
2
|
3
|
5
|
8
|
13
|
21
|
34
|
55
|
89
|
144
|
总体对数
|
1
|
1
|
2
|
3
|
5
|
8
|
13
|
21
|
34
|
55
|
89
|
144
|
233
|
{
int []result = new int[]{ 0, 1 };
if(n<2) return result[n];
return Fib1(n-1)+Fib1(n-2);
}
{
int[] result = new int[] { 0, 1 };
if (n < 2) return result[n];
int n1=0,n2=1,retTemp=0;
for (int i = 2; i <=n; i++)
{
retTemp = n1 + n2;
n1 = n2;
n2 = retTemp;
}
return retTemp;
}
{
Debug.Assert(n > 0);
Matrix matrix = new Matrix();
if (n == 1)
{
return matrix=new Matrix(1,1,1,0);
}
if(n%2==0)
{
matrix = MatrixPower(n / 2);
matrix = MatrixMuti(matrix, matrix);
}
if (n % 2 == 1)
{
matrix = MatrixPower((n-1) / 2);
matrix = MatrixMuti(matrix, matrix);
matrix = MatrixMuti(matrix, new Matrix(1, 1, 1, 0));
}
return matrix;
}
{
public struct Matrix
{
public int m00, m01, m10, m11;
public Matrix(int _m00, int _m01, int _m10, int _m11)
{
m00 = _m00;
m01 = _m01;
m10 = _m10;
m11 = _m11;
}
}
public static Matrix MatrixMuti(Matrix m1, Matrix m2)
{
return new Matrix(m1.m00 * m2.m00 + m1.m10 * m2.m01, m1.m00 * m2.m10 + m1.m10 * m2.m11,
m1.m10 * m2.m00 + m1.m11 * m2.m01, m1.m10 * m2.m00 + m1.m11 * m2.m11);
}
public static Matrix MatrixPower(int n)
{
Debug.Assert(n > 0);
Matrix matrix = new Matrix();
if (n == 1)
{
return matrix=new Matrix(1,1,1,0);
}
if(n%2==0)
{
matrix = MatrixPower(n / 2);
matrix = MatrixMuti(matrix, matrix);
}
if (n % 2 == 1)
{
matrix = MatrixPower((n-1) / 2);
matrix = MatrixMuti(matrix, matrix);
matrix = MatrixMuti(matrix, new Matrix(1, 1, 1, 0));
}
return matrix;
}
public static int Fib3(int n)
{
int[] result = new int[] { 0, 1 };
if(n<2) return result[n];
// MaxtrixBy matrixby=new MaxtrixBy();
Matrix m = MaxtrixBy.MatrixPower(n - 1);
return m.m00;
}
}
|
递归表示
|
迭代法
|
矩阵恒等式
|
时间复杂度
|
O(2 exp n)
|
O(n)
|
O(logn)
|
转载于:https://blog.51cto.com/jizhonglee/1151077
Fibonacii数列,兔子问题相关推荐
- 斐波那契数列-----兔子繁殖问题
斐波那契数列-----兔子繁殖问题 斐波那契数列又因数学家莱昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列". 一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个 ...
- 斐波那契数列---兔子繁殖题
斐波那契数列-兔子繁殖题 如果说兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来.假设所有兔子都不会死去,能够一直干下去,那么一年以后可决繁殖多少对兔子呢? 斐波那契数列的迭代实现 ...
- 递归函数输出斐波那契数列-黄金分割数列-兔子数列(python)
递归函数输出斐波那契数列-黄金分割数列-兔子数列(python) 斐波那契数列介绍 数学家莱昂纳 多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔 ...
- java - 菲波拉契数列 兔子个数
菲波拉契数列:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 结果演示 代码演示 package com.tw ...
- OJ1055: 兔子繁殖问题(C语言计算斐波那契数列/“兔子数列”)
题目描述 这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子.小兔子长到第3个月后每个月又生一对兔子.按此规律,假设没有兔 ...
- 斐波那契数列——兔子生兔子问题
题目 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析 兔子的规律为数列1,1,2,3,5,8,13,21 ...
- 算法-斐波那契数列(黄金分割数列|兔子数列)
前言 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列 ...
- 斐波那契数列 兔子数列
斐波那契数列:每一个数都等于前两位数之和 又称兔子数列:有一对兔子从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假设所有兔子不死,问每个月的兔子总数为多少? 下面为循环 ...
- 斐波那契数列----兔子问题
前言 2021年/01/07 我TM可太爱学JAVA了.奥里给!!! 简单搞一搞JAVA,今天的内容主要是方法体,用方法体去就解决一些问题: 1.斐波那契数列,以兔子繁殖为例子而引入,故又称为&quo ...
最新文章
- 内存接口芯片,服务器平台,PCIe 芯片
- git clone 几种可选参数的使用与区别
- mysql hive索引_Hive数据仓库--HiveQL视图和索引
- 是什么专业_自考什么专业容易就业
- 在mac OSX中安装启动zookeeper
- Maven常用的构建命令
- 前端学习(2179):vue-router-router的由来和vue-router
- 10.深度学习练习:Convolutional Neural Networks: Step by Step(强烈推荐)
- 《常用控制电路》学习笔记——数控锁相环调速电路
- faster rcnn论文_52 个深度学习目标检测模型汇总,论文、源码一应俱全!(附链接)...
- 检测php常量是否存在,php判断变量常量是否存在_PHP教程
- Dataset增加行数据及常用方法
- 10个空手套白狼案例:不花一分钱为自己赚大钱
- [java 手把手教程][第二季]java 后端博客系统文章系统——No7
- Unity3D 《拥挤城市》3D房子建筑透视效果实现
- Docker mongo:5.0
- 军用无人机数据数据集_无人机和大数据
- PANDA pipeline的安装与使用-安装(1)
- 第六次网页前端培训笔记(JavaScript)
- TLM通信(transaction level modle)