遞推算法是經常使用的算法思想,在數學計算等方面有着普遍的應用。遞推算法適合有着明顯公式的規律場合。算法
遞推算法是一種理性思惟模式的表明,其根據已有的數據和關係,逐步推導而獲得結果。遞推算法的執行過程以下:spa
遞推算法每每須要用戶知道答案和問題之間的邏輯關係。在許多數學問題中,都有着明確的計算公式能夠遵循,所以每每能夠採用遞推算法來實現。code
遞推算法是基本的算法思想,經常使用於數學相關的場合。蝦米那經過一個簡單的數學例子來分析遞推算法的應用。遞歸
數學裏面的斐波那契數列即是一個使用遞推算法的經典例子以下:事件
若是一對兩個月大的兔子之後每個月均可以生一對小兔子,而一對新生的兔子出生兩個月後才能夠生小兔子。也就是說,1月份出生,三月份纔可產仔。那麼假定一年內沒有發生兔子死亡事件,那麼1年後共有多少對兔子呢?ci
先來分析一下兔子產仔問題,逐月分析每個月兔子對數。數學
從上述內容能夠看出,從第3個月開始,每月的兔子總對數等於前兩個月兔子數的總和。相應的計算公式(Fn=F(n-1)+F(n-2)),這裏的n是第n個月,這裏初始第1個月的兔子數爲F1=1,F2=1。實例以下:class
public static int fibonacci(int n){ int t1,t2; if (n == 1 || n == 2){ return 1; }else{ t1 = fibonacci(n-1);//遞歸調用 t2 = fibonacci(n-2);//遞歸調用 int num = t1 + t2; return num; } }
根據上述通用的兔子產仔問題算法,能夠求解任意該類問題。下面給出完整的兔子產仔問題求解代碼im
public class mian1 { /** * 若是一對兩個月大的兔子之後每個月均可以生一對小兔子,而一對新生的兔子出生兩個月後才能夠生小兔子。 * 也就是說1月份出生,三月份纔可產仔。那麼假定一年內沒有發生兔子死亡事件,那麼1年後共有多少對兔子呢? */ public static int fibonacci(int n){ int t1,t2; if (n == 1 || n == 2){ return 1; }else{ t1 = fibonacci(n-1);//遞歸調用 t2 = fibonacci(n-2);//遞歸調用 int num = t1 + t2; return num; } } public static void main(String[] args) { System.out.print("請先輸入月份:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int num = fibonacci(n); System.out.println("通過"+n+"月的時間,共繁殖了"+num+"對兔子!"); } }
效果以下:next
請先輸入月份:12 通過12月的時間,共繁殖了144對兔子!