递归学习 斐波那契 java代码实现
生活随笔
收集整理的這篇文章主要介紹了
递归学习 斐波那契 java代码实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- java代碼
- 單元測試
java代碼
package csdn.dreamzuora.recursion;/*** Title: 斐波那契額* Description:*斐波那契數列:0、1、1、2、3、5、8、13、21、34、55.....* f[n] = f[n-2] + f[n-1]* 優點:代碼簡單* 缺點:占用空間較大、如果遞歸太深,可能會發生棧溢出、可能會有重復計算 通過備忘錄或遞歸的方式* 去優化(動態規劃)* 時間復雜度:2的n次方* @version 1.0* @author: weijie* @date: 2020/10/16 11:53*/ public class Fibonacci {int[] a;int init = 2;public Fibonacci(int capacity) {a = new int[capacity];a[0] = 0;a[1] =1;}/*** 遞歸函數:入口 出口* @param n* @return*/public int f(int n){if (n < init){return a[n];}return f(n-2) + f(n - 1);}}單元測試
package csdn.dreamzuora.recursion;import org.junit.Test; import org.junit.jupiter.api.Assertions;import static org.junit.Assert.*;/*** Title:* Description:** @version 1.0* @author: weijie* @date: 2020/10/16 12:01*/ public class FibonacciTest {Fibonacci fibonacci = new Fibonacci(100);@Testpublic void f() {//2 1Assertions.assertEquals(1, fibonacci.f(2));// 3 2Assertions.assertEquals(2, fibonacci.f(3));// 4 3Assertions.assertEquals(3, fibonacci.f(4));//10 55Assertions.assertEquals(55, fibonacci.f(10));} }總結
以上是生活随笔為你收集整理的递归学习 斐波那契 java代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spark和机器学习整合
- 下一篇: 【转载保存】java优先队列使用