遞歸結(jié)構(gòu)的使用
/**
* 測試遞歸結(jié)構(gòu)的使用
* 遞歸即 方法內(nèi)調(diào)用該方法本身 直到達(dá)到特定條件結(jié)束套娃依次返回結(jié)果
*/
public class TestRecursion {
? ?public static void main(String[] args) {
? ? ? ?long startTime = System.currentTimeMillis();
? ? ? ?//讀取當(dāng)前時間 單位毫秒
? ? ? ?int a = factorial(11);
? ? ? ?System.out.println(a);
? ? ? ?//f(5)運(yùn)算得 5*f(4) 等待f(4)運(yùn)算結(jié)果再返回f(5)的值給a
? ? ? ?//f(4)運(yùn)算得4*f(3)等待f(3)結(jié)果再返回f(4)的值給f(5)
? ? ? ?//以此類推,f(2)運(yùn)算得2*f(1) 等f(1)運(yùn)算 f(1)運(yùn)算得1 返回給2*f(1)=2*1 f(2)得2 返回給3*f(2)
? ? ? ?//f(4)運(yùn)算得24 返回給5*f(4) = 5*24 f(5)得120,返回結(jié)果120 賦值int a = 120
? ? ? ?//遞歸每一步都要等下一步返回結(jié)果,占用大量資源,速度比循環(huán)慢效率低
? ? ? ?long endTime = System.currentTimeMillis();
? ? ? ?System.out.println(endTime-startTime+"ms");
? ? ? ?endTime = System.currentTimeMillis();
? ? ? ?a = 1;
? ? ? ?for (int b = 11;b!=1;b--){
? ? ? ? ? ?a *=b;
? ? ? ?}
? ? ? ?System.out.println(a);
? ? ? ?//循環(huán)作用同遞歸
? ? ? ?startTime = System.currentTimeMillis();
? ? ? ?System.out.println(startTime-endTime+"ms");
? ?}
? ?static int factorial(int a){
? ? ? ?if(a>1){
? ? ? ? ? ?return a*factorial(a-1);
? ? ? ?}else return a;
? ?}
}