F ( 0 ) = 1 F ( 1 ) = 1 , F ( n ) = F ( n 1 ) + F ( n 2 ) n 2 n N

1. 循环

* 使用循环计算fibonacci * @param n * @return public static int fibLoop ( int n ) { if ( n <= 2 ) return 1 ; int a = 1 , b = 1 ; while ( n -- != 2 ) { b = a + b ; a = b - a ; return b ;

2. 递归

* 使用简单递归 * @param n * @return public static int fibRecursive ( int n ) { if ( n == 1 || n == 2 ) return 1 ; return fibRecursive ( n - 1 ) + fibRecursive ( n - 2 ) ;

3. 带备忘录的递归

* 带备忘录的fib * @param n * @return public static int fibRecord ( int n ) { int [ ] rec = new int [ n + 1 ] ; int fib = fib ( rec , n ) ; System . out . println ( Arrays . toString ( rec ) ) ; return fib ; * 带备忘录的fib计算核心函数 * @param rec * @param n * @return private static int fib ( int [ ] rec , int n ) { if ( n == 1 || n == 2 ) { return 1 ; if ( rec [ n ] > 0 ) return rec [ n ] ; rec [ n ] = fib ( rec , n - 1 ) + fib ( rec , n - 2 ) ; return rec [ n ] ;

4.使用公式

F(n)=\frac{1}{ \sqrt{5}}\left [\left ( \frac{1+\sqrt{5}}{2} \right )^n- \left ( \frac{1-\sqrt{5}}{2} \right )^n \right ]
F ( n ) = 5 1 [ ( 2 1 + 5 ) n ( 2 1 5 ) n ]

* @param n * @return public static int fibFormula ( int n ) { double sqr = Math . sqrt ( 5 ) ; double ret = ( Math . pow ( ( 1 + sqr ) / 2 , n ) - Math . pow ( ( 1 - sqr ) / 2 , n ) ) / sqr ; return ( int ) ret ;

我们已经知道

\begin{bmatrix} F\left ( n+1 \right ) & F\left ( n \right )\\ F\left ( n \right )& F\left ( n-1 \right ) \end{bmatrix}
[ F ( n + 1 ) F ( n ) F ( n ) F ( n 1 ) ]
现在我们希望有一个矩阵A使得:
\begin{bmatrix} F\left ( n+1 \right ) & F\left ( n \right )\\ F\left ( n \right )& F\left ( n-1 \right ) \end{bmatrix} \times A = \begin{bmatrix} F\left ( n+2 \right ) & F\left ( n+1 \right )\\ F\left ( n+1 \right ) & F\left ( n \right ) \end{bmatrix} [ F ( n + 1 ) F ( n ) F ( n ) F ( n 1 ) ] × A = [ F ( n + 2 ) F ( n + 1 ) F ( n + 1 ) F ( n ) ]
求得
T\left ( n \right ) = \begin{bmatrix} F\left ( n+1 \right ) &F\left ( n \right ) \\ F\left ( n \right )& F\left ( n-1 \right ) \end{bmatrix} T ( n ) = [ F ( n + 1 ) F ( n ) F ( n ) F ( n 1 ) ]

T\left ( n \right ) = T\left ( n-1 \right ) \times \begin{bmatrix} 1 &1 \\ 1 &0 \end{bmatrix} = T\left ( n-2 \right ) \times \begin{bmatrix} 1 &1 \\ 1&0 \end{bmatrix}^{2} =...... = \begin{bmatrix} 1&1 \\ 1& 0 \end{bmatrix}^{n} T ( n ) = T ( n 1 ) × [ 1 1 1 0 ] = T ( n 2 ) × [ 1 1 1 0 ] 2 = ...... = [ 1 1 1 0 ] n

* 使用矩阵计算fib * @param n * @return public static int fibMatrix ( int n ) { if ( n <= 2 ) return 1 ; int [ ] [ ] a = { { 1 , 1 } , { 1 , 0 } } ; int [ ] [ ] pow = matrixPow ( a , n ) ; return pow [ 1 ] [ 0 ] ; * 矩阵乘法 A(m*n)xB(n*p)=C(m*p) * @param a * @param b * @return public static int [ ] [ ] matrixMutiply ( int [ ] [ ] a , int [ ] [ ] b ) { int [ ] [ ] c = new int [ a . length ] [ b [ 0 ] . length ] ; for ( int i = 0 ; i < a . length ; i ++ ) for ( int j = 0 ; j < b [ 0 ] . length ; j ++ ) for ( int k = 0 ; k < b . length ; k ++ ) c [ i ] [ j ] += a [ i ] [ k ] * b [ k ] [ j ] ; return c ; * 矩阵 快速幂 * 计算矩阵A的b次幂 * @param a * @param b * @return public static int [ ] [ ] matrixPow ( int [ ] [ ] a , int b ) { int [ ] [ ] c = new int [ a . length ] [ a . length ] ; // 单位阵 for ( int i = 0 ; i < a . length ; i ++ ) c [ i ] [ i ] = 1 ; while ( b > 0 ) { if ( ( b & 1 ) != 0 ) { c = matrixMutiply ( a , c ) ; a = matrixMutiply ( a , a ) ; b >>= 1 ; return c ;
    public void testFib() {
        int n = 10;
        System.out.println(fibLoop(n));
        System.out.println(fibRecursive(n));
        System.out.println(fibRecord(n));
        System.out.println(fibFormula(n));
        System.out.println(fibMatrix(n));
                    花式计算斐波那契fibonacci数列关于1. 循环2. 递归3. 带备忘录的递归4. 使用矩阵乘法统一测试下关于斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=1,F(1)=1,F(n)=F(n−1)+F(n−2)(n≥2,n∈N∗)	F(
				
资源包含文件:设计报告word+源码及截图 要求使用合适的逻辑电路的设计方法,通过工具软件 logisim 进行斐波那契(Fibonacci)数列计算器设计和验证,记录实验结果,验证设计是否达到要求。 通过斐波那契(Fibonacci)数列计算器的设计、仿真、验证 3 个训练过程,掌握数字逻辑电路的设计、仿真、调试的方法。 Logisim2.7.1 软件 详细介绍参考:https://biyezuopin.blog.csdn.net/article/details/122684105?spm=1001.2014.3001.5502
初识算法斐波那契数列 算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的差别。 和大多数人一样,初识算法从阶乘和斐波那契数列开始,但是不一样的算法真的存在很大的差别吗? 怀着这样好奇心,于是乎用斐波那契数列做了一组小小的实验。 斐波那契数列Fibonacci) ps:以下都是js的简单代码。 斐波那契数列Fibonacci sequence),又称[黄金分割]数列,因数学家莱昂纳多·斐波
斐波那契数列Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) 生成斐波那契数列的前20个数。 说明:斐波那契数列Fibonacci sequence),又称黄金分割数列,是意大利数学家莱昂纳多·斐波那契(Leonardoda Fibonacci) 在《计算之书》中提出一个在理想假设条件下兔子成长率的问题而引入的数列,所以这个数列也被戏称为"兔子数列"。 斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和, 形如:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...。斐波那契数列
斐波那契数列 斐波那契数列Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列: 0、1、1、2、3、5、8、13、21、34、…… 在数学上,斐波那契数列以如下被以递推的方法定义: F(0)=0, F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*) 在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会
斐波那契数列Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、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*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用 。 # -- codin...
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" /> 保存,然后重启tomcat,重新访问manager app页面,OK,问题得到解决。
超详细Ubuntu Linux安装配置 Tomcat jackiesky1206: 1、创建Tomcat用户 首先需要创建一个新的Tomcat用户,并为其分配Tomcat安装目录的所有权。可以使用以下命令来创建新用户: sudo useradd -r tomcat sudo chown -R tomcat /usr/local/tomcat 上述命令创建了一个名为tomcat的新用户,并将Tomcat的安装目录所有权分配给了该用户。 2、修改Tomcat配置文件 接下来需要修改Tomcat的配置文件,以便允许以普通用户权限启动Tomcat。打开Tomcat的catalina.sh文件,在文件头部添加以下代码: #!/bin/sh # ... TOMCAT_USER=tomcat 上述代码将TOMCAT_USER变量设置为新创建的Tomcat用户。 超详细Ubuntu Linux安装配置 Tomcat 游龙清杰: <role rolename="tomcat"/> <role rolename="manager-gui"/> <role rolename="admin-gui"/> <role rolename="manager-script"/> <role rolename="admin-script"/> <user username="tomcat" password="mypasswd" roles="tomcat,manager-gui,admin-gui,admin-script,manager-script"/> 博主这一步是在哪个末尾添加

统一测试下

5. 使用矩阵乘法