顧名思義,所謂遞迴就是乙個函式(或方法)自己呼叫自己,最簡的如下:
public void text()
private int count = 0;
/** 每次讓count累加,當它等於4時,就返回,這樣就能這個遞迴函式了
*/public void text()
count++;
text();
}
有如下問題:假設第乙個月有一對剛出生的兔子,第二個月兔子進入成熟期,我三個月開始生育小兔子,而一對成熟的兔子會在每月生育一對小兔子,兔子永遠不會死去。。。n月後會有多少只兔子
可以很容易地使用窮舉來計算剛開始的幾個月的兔子數月份1
2345
67兔子對數11
2358
13很容易得到乙個算式就是:
當n=0時,有0對兔子;
當n=1時,有1對兔子;
當n=2時,有1對兔子,因為它是第三個月才開始生小兔子的
當n>2時,f(n)=f(n-1)+f(n-2)
當有了上面的式子後,我們就很容易地寫出了如下**:
public static int brithnew(int n)
if (n == 0)
//這個其實就是遞迴退出的條件,因為n一直的在遞減
if (n <= 2)
return brithnew(n-1)+brithnew(n-2);
}
先使用二維陣列定義乙個迷宮,有如下約定:
private static void init(int maze)
for (int i = 0; i < 8; i++)
maze[3][1] = 1;
maze[3][2] = 1;
maze[3][3] = 1;
maze[5][3] = 1;
maze[5][4] = 1;
maze[5][5] = 1;
maze[4][5] = 1;
maze[3][5] = 1;
maze[2][5] = 1;
maze[1][5] = 1;
maze[2][7] = 1;
maze[3][7] = 1;
maze[4][7] = 1;
maze[5][7] = 1;
maze[6][7] = 1;
}
列印下這個陣列,就和上邊的一樣,如下:
然後就開始找尋路徑,具體有如下規則
上邊用到的列印陣列的**為:
public static void printlnarr(int arr)
system.out.println();
system.out.println();}}
資料結構之遞迴
本篇是資料結構與演算法之美學習筆記 遞迴在電腦科學中指一種通過將重複問題分解為同列子問題來解決問題的方法。遞迴是一種常見的演算法或者程式設計技巧。很多資料結構和演算法的編碼實現都會使用到遞迴,比附dfs深度搜尋,前中後序二叉樹遍歷等等。遞迴需要滿足三個條件 1.乙個問題的解可以分成幾個解。子問題就是...
資料結構之遞迴
資料結構與演算法遞迴 class solution def factorial self,n if n 1 return 1else return n factorial n 1 如果查詢的資料是有序的,二分查詢演算法比順序查詢演算法更高效 defbinary search nums,v nums....
資料結構之遞迴
程式呼叫自身的程式設計技巧稱為遞迴 recursion 遞迴做為一種演算法 在程式語言中廣泛應用。乙個過程或函函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,...