一 遞歸(來自百度百科)
程序調用自身的編程技巧稱爲遞歸(
recursion)。遞歸做爲一種算法在程序設計語言中廣泛應用。
一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型複雜的問題層層轉化爲一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重複計算,大大地減少了程序的代碼量。遞歸的能力在於用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。
注意:遞歸不可以無限的調用下去 ,一定要有出口,即遞歸結束的條件
二 遞歸的應用(斐波那契數列的輸出)
斐波那契數列(Fibonacci
sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda
Fibonacci)以兔子繁殖爲例子而引入,故又稱爲“兔子數列”,指的是這樣一個數列: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*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,爲此,美國數學會從1963起出版了以《斐波納契數列季刊》爲名的一份數學雜誌,用於專門刊載這方面的研究成果
斐波那契數列輸出前n項(java)
import java.util.*;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i =1;i<=n;i++){
System.out.print(fibonacci(i)+" ");
}
}
public static int fibonacci(int n){
if (n==1||n==2){
return 1;
}
else {
return fibonacci(n-1)+fibonacci(n-2);
}
}
}
輸入要顯示的項數
具體的求某一項的思路,拿第五項爲例
(製作:百度腦圖)
要想求第五項f(5);就會調用fibonacci函數(下面簡稱f),求f(4)+f(3),同理,要想求f(4)+f(3)同樣需要遞歸再次調用自己求f(n-1)+f(n-2),直到調用到程序的出口(即f(1),f(2))時,停止遞歸,從而一層層向上返回。