最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于JS遞歸函數(shù)細(xì)化認(rèn)識(shí)及實(shí)用實(shí)例(推薦)

 更新時(shí)間:2017年08月07日 08:13:21   投稿:jingxian  
下面小編就為大家?guī)硪黄贘S遞歸函數(shù)細(xì)化認(rèn)識(shí)及實(shí)用實(shí)例(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

程序調(diào)用自身的編程技巧稱為遞歸( recursion)。

一個(gè)過程或函數(shù)在其定義或說明中又直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問題層層轉(zhuǎn)化為一個(gè)與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。用遞歸思想寫出的程序往往十分簡潔易懂。

一般來說,遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。

注意:

(1) 遞歸就是在過程或函數(shù)里調(diào)用自身;

(2) 在使用遞增歸策略時(shí),必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口,否則將無限進(jìn)行下去(死鎖)。

遞歸算法一般用于解決三類問題:

(1)數(shù)據(jù)的定義是按遞歸定義的。(Fibonacci函數(shù))

(2)問題解法按遞歸算法實(shí)現(xiàn)。(回溯)

(3)數(shù)據(jù)的結(jié)構(gòu)形式是按遞歸定義的。(樹的遍歷,圖的搜索)

遞歸的缺點(diǎn):

遞歸算法解題的運(yùn)行效率較低。在遞歸調(diào)用的過程當(dāng)中系統(tǒng)為每一層的返回點(diǎn)、局部量等開辟了棧來存儲(chǔ)。遞歸次數(shù)過多容易造成棧溢出等。

遞歸函數(shù)趣味實(shí)例:

1、 古典問題——有一對兔子,從出生后第3個(gè)月起每個(gè)月都生一對兔子,小兔子長到第三個(gè)月后每個(gè)月又生一對兔子,假如兔子都不死,問第三年每個(gè)月的兔子總數(shù)為多少?(提示:兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21....)

 class Program
 {
  static void Main(string[] args)
  {
   Program p = new Program();
   Console.WriteLine(p.tuzi(7));
  }
  public int tuzi(int n) 
  {
   if (n == 1 || n == 2)
   {
    return 1;
   }
   else 
   {
    return tuzi(n - 1) + tuzi(n - 2);
   }
  }
 }

2、 趣味問題——年齡。有5個(gè)人坐在一起,問第五個(gè)人多少歲?他說比第4個(gè)人大2歲。問第4個(gè)人歲數(shù),他說比第3個(gè)人大2歲。問第三個(gè)人,又說比第2人大兩歲。問第2個(gè)人,說比第一個(gè)人大兩歲。最后問第一個(gè)人,他說是10歲。請問第五個(gè)人多大?用遞歸算法實(shí)現(xiàn)。

class Program
 {
  static void Main(string[] args)
  {
   Program p = new Program();
   
   Console.WriteLine( p.age(5));
  }
  /// <summary>
  /// 遞歸法求歲數(shù)
  /// </summary>
  /// <param name="n">有幾個(gè)人</param>
  /// <returns></returns>
  int age(int n)
  {
   int c;
   if(n==1)
    return 10;
  
   else
   {
    c = age(n-1)+2;
    return c;
   } 
  }

3、 趣味問題——猴子吃桃。海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據(jù)分為五份,多了一個(gè),這只猴子把多的一個(gè)扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個(gè),它同樣把多的一個(gè)扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個(gè)桃子?
代碼:

class Program
 {
  static void Main(string[] args)
  {
   
   Program p = new Program();
   
   Console.WriteLine( p.PeachNumber(5));
   
  }
  /// <summary>
  /// 遞歸法求桃子數(shù)
  /// </summary>
  /// <param name="n"></param>
  /// <returns></returns>
  int PeachNumber(int n) 
  {
   if (n == 1)
   {
    //最后一個(gè)是至少是六個(gè)
    return 6;
   }
   else 
   {
    return (PeachNumber(n - 1) + 1) * 5;
   }
  }

以上這篇基于JS遞歸函數(shù)細(xì)化認(rèn)識(shí)及實(shí)用實(shí)例(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用JavaScript實(shí)現(xiàn)獲取audio時(shí)長

    使用JavaScript實(shí)現(xiàn)獲取audio時(shí)長

    這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實(shí)現(xiàn)獲取audio時(shí)長,并且轉(zhuǎn)換為分鐘00:00:00格式,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • javascript計(jì)時(shí)器詳解

    javascript計(jì)時(shí)器詳解

    這篇文章主要詳細(xì)介紹了javascript計(jì)時(shí)器的相關(guān)資料,十分全面詳盡,需要的朋友可以參考下
    2015-02-02
  • 微信小程序使用canvas畫圖保存圖片到手機(jī)相冊代碼示例

    微信小程序使用canvas畫圖保存圖片到手機(jī)相冊代碼示例

    在微信小程序中利用canvas?API繪制圖形后,可通過CanvasContext.draw方法將圖形渲染到畫布,并使用wx.canvasToTempFilePath將畫布導(dǎo)出為圖片,再通過wx.saveImageToPhotosAlbum方法保存到手機(jī)相冊,,需要的朋友可以參考下
    2024-09-09
  • 如何在JavaScript?中獲取域名

    如何在JavaScript?中獲取域名

    本文將討論如何使用?JavaScript?事件和函數(shù)在網(wǎng)頁執(zhí)行期間以編程方式獲取域名,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-06-06
  • js實(shí)現(xiàn)瀏覽器倒計(jì)時(shí)跳轉(zhuǎn)頁面效果

    js實(shí)現(xiàn)瀏覽器倒計(jì)時(shí)跳轉(zhuǎn)頁面效果

    這篇文章主要為大家詳細(xì)介紹了js瀏覽器倒計(jì)時(shí)跳轉(zhuǎn)頁面效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )

    JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_

    今天在網(wǎng)上看到一篇很有意思的文章(需翻墻),解釋了幾段非常有趣的 JavaScript 代碼。你猜下面這段 JavaScript 代碼是什么意思?
    2011-02-02
  • 嘗試在讓script的type屬性等于text/html

    嘗試在讓script的type屬性等于text/html

    我們可以在script片斷中定義一個(gè)被JS調(diào)用的代碼,但代碼又不在頁面上顯示,這時(shí),我們可以使用下面的方法;當(dāng)script中的type等于text/html時(shí)我們可以做些什么呢?感興趣的朋友可以了解下啊
    2013-01-01
  • 前端JS可視化學(xué)習(xí)利用向量判斷多邊形邊界

    前端JS可視化學(xué)習(xí)利用向量判斷多邊形邊界

    這篇文章主要為大家介紹了前端JS可視化學(xué)習(xí)利用向量判斷多邊形邊界示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • js實(shí)現(xiàn)實(shí)時(shí)刷新的三種形式(setInterval、WebSocket、EventSource)

    js實(shí)現(xiàn)實(shí)時(shí)刷新的三種形式(setInterval、WebSocket、EventSource)

    本文主要介紹了js實(shí)現(xiàn)實(shí)時(shí)刷新的三種形式(setInterval、WebSocket、EventSource),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 借用Google的Javascript API Loader來加速你的網(wǎng)站

    借用Google的Javascript API Loader來加速你的網(wǎng)站

    加速頁面加載速度有一個(gè)方法就是把CSS和JS文件放到另外一個(gè)單獨(dú)的服務(wù)器上,這樣在訪問量比較大的情況下可以分擔(dān)主服務(wù)器的壓力
    2009-01-01

最新評(píng)論

汉川市| 黑龙江省| 包头市| 慈溪市| 长葛市| 山西省| 偃师市| 毕节市| 酉阳| 安义县| 珲春市| 马尔康县| 霍林郭勒市| 石狮市| 长汀县| 霍邱县| 定西市| 永年县| 射阳县| 罗山县| 桦南县| 垣曲县| 汶上县| 新乡县| 洪湖市| 寿光市| 兖州市| 安新县| 绍兴县| 景宁| 河间市| 巧家县| 富裕县| 霍林郭勒市| 辽阳县| 正阳县| 连平县| 青岛市| 马尔康县| 金坛市| 库伦旗|