Java之遞歸

 

  在遞歸中須要注意兩點:算法

    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

其實這裏最重要的參數是判斷位置,若是第一位和最後覺得相同,則判斷第二位和倒數第二位,當判斷到中間時,全部字符都相同的時候,則爲迴文

==============================================================

相關文章
相關標籤/搜索