- 五一,第二天。作爲屌絲的我。又是一天新的擼碼。因爲項目中基本不允許遞歸算法。以至於我現在都了遞歸怎麼寫了。今天閒的沒事幹來回憶下下。
- 其實簡單的遞歸算法比較容易實現
- 我們廢話不說,直接上代碼
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.有一個簡單的終止方法。
一般我們在項目中是不允許用遞歸算法的因爲。遞歸算法不斷的往棧裏壓方法和變量。有時會因爲系統的內存不足造成系統崩潰。內存溢出等問題。
其實遞歸算法有很多很多種。然而發現自己不是特別想擼代碼。。嘖嘖算了。先打一把英雄聯盟在說。。無畏的噢。。