在遞歸中須要注意兩點:算法
1.遞歸是在函數中調用本身 函數
2.在遞歸中,必需要有一個明確的條件做爲結束,不然會造成死循環,一個勁的調用下去oop
從網上找幾個例子轉過來post
============================================================spa
一列數的規則以下: 一、一、二、三、五、八、1三、2一、34...... 求第30位數是多少, 用遞歸算法實現code
分析:第一位是1,第二位是1,第三位是第1位和第2位之和,後面每位都是前面兩位之和blog
class Revert { public static void main(String[] args) { int i = fn(8); System.out.println(i); } public static int fn(int n){ if(n == 1){ return 1; //第一位返回1 }else if(n == 2){ return 1; //第二位也返回1 }else{ return fn(n-1) + fn(n-2); //從第三位開始,每位返回前兩位之和 } } }
=======================================================================遞歸
遞歸實現迴文判斷 迴文: String s1 = "abcddcba" String s2 = "abcba"字符串
class loopWord { public static void main(String[] args) { boolean a = loopWord("abcdcba",0); System.out.println(a); } static boolean loopWord(String str, int i) { if (str.charAt(i) == str.charAt(str.length() - 1 - i)) { //判斷是否相同 if (i == (str.length() + 1) / 2){ //判斷是否到了最中間 return true; //若是都相同,返回true } System.out.println("這個時候i=" + i + " 字符串的第" + i +"位爲:" + str.charAt(i)); //爲方便觀察,輸出語句 return loopWord(str, i + 1); //若是第一位和最後覺得相同,則返回從第二位和倒數第二位 } else { return false; } } }
以上代碼的輸出結果爲it
這個時候i=0 字符串的第0位爲:a 這個時候i=1 字符串的第1位爲:b 這個時候i=2 字符串的第2位爲:c 這個時候i=3 字符串的第3位爲:d true
其實這裏最重要的參數是判斷位置,若是第一位和最後覺得相同,則判斷第二位和倒數第二位,當判斷到中間時,全部字符都相同的時候,則爲迴文
==============================================================