摘要:今天在公司實習,實在沒啥活是我能干的,就想著寫一寫算法打發時間,正好看到了斐波那契數列,搞起。這是斐波那契數列的通項公式以前用遞歸寫過,今天看的時候書上說遞歸雖然簡單,但其實內部做了很多重復的計算,而且尾遞歸都是可以用循環解決的。
今天在公司實習,實在沒啥活是我能干的,就想著寫一寫算法打發時間,正好看到了斐波那契數列,搞起。
這是斐波那契數列的通項公式:
以前用遞歸寫過,今天看的時候書上說遞歸雖然簡單,但其實內部做了很多重復的計算,而且尾遞歸都是可以用循環解決的。而用循環就可以避免重復的計算。
import java.util.Scanner; public class Jianzhi{ public static void main (String[] args){ Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); n = fibonacci(n) ; System.out.println(n) ; } public static int fibonacci(int n ) { int f0 = 0; int f1 = 1; int fn = 0 ; if (n == 0) { return f0; } if (n == 1) { return f1; } else { for (int i = 2; i <= n; i++) { fn = f0 + f1; //當前循環所得的斐波那契數等于前一個加上前前個 f0 = f1 ; //當前循環所得的斐波那契數的前一個數,作為下次循環的前前個次數 f1 = fn ; //當前循環所得的斐波那契的數,作為下次循環的前一個數 } return fn; } } }
斐波那契數列的變換:
比如,從前有一只青蛙,它一次可以跳一個臺階,也可以一次跳兩個臺階,求一個N階的臺階他會用幾種跳法。
那就是假設就1個臺階 那就只有1種跳法;如果有2個臺階,那就有2種;以此類推:
1 1 2 2 3 3 4 5
完畢。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71370.html
摘要:在上做了一道斐波那契數列求和的題目,做完之后做了一些簡單的優化和用另一種方法實現。動態規劃解決方案斐波那契數列求和除了可以用遞歸的方法解決,還可以用動態規劃的方法解決。 在codewars上做了一道斐波那契數列求和的題目,做完之后做了一些簡單的優化和用另一種方法實現。 題目 function fibonacci(n) { if(n==0 || n == 1) r...
摘要:根據該規則,返回第個斐波那契數。尾遞歸函數調用自身,稱為遞歸。一個前端眼中的斐波那契數列解斐波那契數列的實用解法調用棧尾遞歸和手動優化尾調用優化譯我從用寫斐波那契生成器中學到的令人驚訝的件事 斐波那契數列是以下一系列數字: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, ... 在種子數字 0 和 1 ...
摘要:下面是一個可以處理很多類型遞歸函數的函數其中第一個參數為原有函數,第二個參數為緩存對象,是可選參數因為并不是所有遞歸函數都包含初始信息。首先將緩存對象的類型從數組轉換為對象,這樣就可以適用于那些不是返回整數的遞歸函數。 JavaScript解斐波那契(Fibonacci)數列的實用解法 我們經常會在面試題中看到如下題目:輸入n,求斐波那契數列的第n項,斐波那契數列的定義如下: F(0)...
摘要:題目現在要求輸入一個整數,請你輸出斐波那契數列的第項。遞歸操作時間復雜度太高,而且用遞歸會產生很多重復的操作。非遞歸操作這種方法就是一次遍歷過去就行,計算第個數時,使用了兩個變量存儲第和第個數,使時間復雜度降低到 題目 現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。 遞歸操作O(2^n) function fibonacci(n) { if(n < 1) ...
摘要:前言在計算機領域,記憶是主要用于加速程序計算的一種優化技術,它使得函數避免重復演算之前已被處理過的輸入,而返回已緩存的結果。被執行了不是素數,其他數字默認是素數。我們可以看出,如果從開始打印斐波那契數列,函數被執行了次。 前言 在計算機領域,記憶(memoization)是主要用于加速程序計算的一種優化技術,它使得函數避免重復演算之前已被處理過的輸入,而返回已緩存的結果。 -- wi...
閱讀 3478·2021-11-08 13:30
閱讀 3584·2019-08-30 15:55
閱讀 688·2019-08-29 15:16
閱讀 1750·2019-08-26 13:57
閱讀 2091·2019-08-26 12:18
閱讀 789·2019-08-26 11:36
閱讀 1733·2019-08-26 11:30
閱讀 3017·2019-08-23 16:46