久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      java遞歸簡(jiǎn)單例子如何創(chuàng)建

      創(chuàng)建java遞歸的方法:首先創(chuàng)建明確的遞歸結(jié)束條件;然后設(shè)置判斷條件,代碼為【private static int sumNum(int n){if (n == 1){return 1;}return n + sumNum(n-1)}】。

      java遞歸簡(jiǎn)單例子如何創(chuàng)建

      創(chuàng)建java遞歸的方法:

      程序調(diào)用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設(shè)計(jì)語(yǔ)言中廣泛應(yīng)用。 一個(gè)過(guò)程或函數(shù)在其定義或說(shuō)明中有直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問(wèn)題層層轉(zhuǎn)化為一個(gè)與原問(wèn)題相似的規(guī)模較小的問(wèn)題來(lái)求解,遞歸策略只需少量的程序就可描述出解題過(guò)程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語(yǔ)句來(lái)定義對(duì)象的無(wú)限集合。一般來(lái)說(shuō),遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。

      首先,我們來(lái)看一下最簡(jiǎn)單的求和例子。

      <span style="font-size:18px;">public static void main(String[] args) { System.out.println(sumNum(100)); //輸出:5050 } //求1-100的和 private static int sumNum(int n) { if (n == 1) { return 1; } return n + sumNum(n-1); }</span>

      下面我們用遞歸實(shí)現(xiàn)斐波那契數(shù)列。

      斐波那契數(shù)列,又稱黃金分割數(shù)列,指的是這樣一個(gè)數(shù)列:0、1、1、2、3、5、8、13、21、……在數(shù)學(xué)上,斐波納契數(shù)列以如下被以遞歸的方法定義:F(0)=0,F(xiàn)(1)=1,F(xiàn)(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在現(xiàn)代物理、準(zhǔn)晶體結(jié)構(gòu)、化學(xué)等領(lǐng)域,斐波納契數(shù)列都有直接的應(yīng)用。

      //用遞歸求解 public static int fib(int n) { if (n == 0) return 0; if (n == 1 || n == 2) return 1; return fib(n - 1) + fib(n - 2); } //用循環(huán)求解 public static int fib2(int n) { int a = 0, b = 1, c = 1; if (n == 0) return 0; if (n == 1 || n == 2) return 1; for (int i = 0; i < n - 1; i++) { c = a + b; a = b; b = c; } return c; } //用數(shù)組求解 public static int fib3(int n) { int[] arr = new int[n + 1]; arr[0] = 0; arr[1] = 1; for (int i = 2; i <= n; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } return arr[n]; }

      下面再來(lái)看一下另外一個(gè)例子,計(jì)算階乘。

      階乘是基斯頓·卡曼(Christian Kramp,1760~1826)于 1808 年發(fā)明的運(yùn)算符號(hào),是 數(shù)學(xué)術(shù)語(yǔ)。

      一個(gè)正整數(shù)的 階乘( 英語(yǔ): factorial)是所有小于及等于該數(shù)的 正整數(shù)的 積,并且有0的階乘為1。 自然數(shù)n的階乘寫(xiě)作n!。 亦即n!=1×2×3×…×n。階乘亦可以 遞歸 方式定義:0!=1,n!=(n-1)!×n。

      //用遞歸計(jì)算階乘 public static int jc(int n) { //結(jié)束條件 if ( n == 1) return 1; //遞歸條件 return n * jc(n-1); } //用for循環(huán)實(shí)現(xiàn)階乘 public static int jc2(int n) { int sum = 1; for (int i = 1; i <= n; i++) { sum *= i; } return sum; }

      遞歸的條件:

      1、 結(jié)束條件: 必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口。

      2、 遞歸條件: 遞歸的運(yùn)算法則.

      遞歸的特點(diǎn):

      1、簡(jiǎn)潔明了: 遞歸算法,一般讓人一眼就能看出運(yùn)算結(jié)構(gòu),很接近于數(shù)學(xué)自然語(yǔ)言。

      2、內(nèi)存消耗大:在遞歸調(diào)用的過(guò)程當(dāng)中系統(tǒng)為每一層的返回點(diǎn)、局部量等開(kāi)辟了棧來(lái)存儲(chǔ)。遞歸次數(shù)過(guò)多容易造成棧溢出等。所以一般不提倡用遞歸算法設(shè)計(jì)程序。

      相關(guān)學(xué)習(xí)推薦:java基礎(chǔ)教程

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)