跟小刀學習 遞歸簡單實現

  • 五一,第二天。作爲屌絲的我。又是一天新的擼碼。因爲項目中基本不允許遞歸算法。以至於我現在都了遞歸怎麼寫了。今天閒的沒事幹來回憶下下。
  • 其實簡單的遞歸算法比較容易實現
  • 我們廢話不說,直接上代碼
package com.chapter4_29;

/**
 * 三角數的計算
 * @author zqp
 *10+9+8+。。。。+1
 */
public class Triangle {


    public static void main(String[] args) {

//      System.out.println("三角計算的值:"+getTotal(3));
        System.out.println("階乘計算的值:"+getFactorial(3));



    }

    /**
     * //最後調用函數時直接返回結果1 和前面的N 相加。
     * 
     *學好數學很重要。然而我的數學不怎麼好。等以後好好從高中開始複習數學。。
     *其實這種三角函數的公式 就是 (n² +n)/2
     * @param i
     * @return
     */ 
    static int getTotal(int i){
        if(i == 1){
            return 1;
        }else{
            return (i+getTotal(i-1));
        }
    }
    /**
     * 獲取階乘的總數
     * 6*5*4*。。。。*1
     */
    static int getFactorial(int n){

        if(n == 0){

            return 1;
        }else{
            System.out.println("運行:"+n+"*"+(n-1));
            return n*getFactorial( n-1);
        }

    }
}


運行:3*2
運行:2*1
運行:1*0
階乘計算的值:6

我自己畫了一個圖。也貼上來

這裏寫圖片描述

這只是遞歸的簡單實現

遞歸的主要特徵:1.就是自己調用自己,2.有一個簡單的終止方法。
一般我們在項目中是不允許用遞歸算法的因爲。遞歸算法不斷的往棧裏壓方法和變量。有時會因爲系統的內存不足造成系統崩潰。內存溢出等問題。
其實遞歸算法有很多很多種。然而發現自己不是特別想擼代碼。。嘖嘖算了。先打一把英雄聯盟在說。。無畏的噢。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章