日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

递归_三要素_基础算法必备

發布時間:2024/8/26 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 递归_三要素_基础算法必备 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遞歸_三要素_基礎算法必備

目錄

第一要素:明確函數作用

第二要素:遞歸結束條件

第三要素:函數等價關系


第一要素:明確函數作用

對于遞歸,我覺得很重要的一個事就是,這個函數的功能是什么,他要完成什么樣的一件事,而這個,是完全由你自己來定義的。也就是說,我們先不管函數里面的代碼什么,而是要先明白,你這個函數是要用來干什么。

// 算 n 的階乘(假設n不為0) public static int f(int n){}

這個函數的功能是算 n 的階乘。我們已經定義了一個函數,并且定義了它的功能是什么,接下來我們看第二要素。

第二要素:遞歸結束條件

所謂遞歸,就是會在函數內部代碼中,調用這個函數本身,所以,我們必須要找出遞歸的結束條件,不然的話,會一直調用自己,進入無底洞。也就是說,我們需要找出當參數為啥時,遞歸結束,之后直接把結果返回,請注意,這個時候我們必須能根據這個參數的值,能夠直接知道函數的結果是什么。

例如,上面那個例子,當 n = 1 時,那你應該能夠直接知道 f(n) 是啥吧?此時,f(1) = 1。完善我們函數內部的代碼,把第二要素加進代碼里面,如下

// 算 n 的階乘(假設n不為0) public static int f(int n){if(n == 1){return 1;} }

有人可能會說,當 n = 2 時,那我們可以直接知道 f(n) 等于多少啊,那我可以把 n = 2 作為遞歸的結束條件嗎?

當然可以,只要你覺得參數是什么時,你能夠直接知道函數的結果,那么你就可以把這個參數作為結束的條件,所以下面這段代碼也是可以的。

// 算 n 的階乘(假設n>=2) public static int f(int n){if(n == 2){return 2;} }

注意我代碼里面寫的注釋,假設 n >= 2,因為如果 n = 1時,會被漏掉,當 n <= 2時,f(n) = n,所以為了更加嚴謹,我們可以寫成這樣:?

// 算 n 的階乘(假設n不為0) public static int f(int n){if(n <= 2){return n;} }

第三要素:函數等價關系

第三要素就是,我們要不斷縮小參數的范圍,縮小之后,我們可以通過一些輔助的變量或者操作,使原函數的結果不變。

例如,f(n) 這個范圍比較大,我們可以讓 f(n) = n * f(n-1)。這樣,范圍就由 n 變成了 n-1 了,范圍變小了,并且為了原函數f(n) 不變,我們需要讓 f(n-1) 乘以n。

說白了,就是要找到原函數的一個等價關系式,

f(n) 的等價關系式為 n * f(n-1),

即:f(n) = n * f(n-1)。

這個等價關系式的尋找,可以說是最難的一步了,如果你不大懂也沒關系,因為你不是天才,你還需要多接觸幾道題,我會在接下來的文章中,找 10 道遞歸題,讓你慢慢熟悉起來。?

找出了這個等價,繼續完善我們的代碼,我們把這個等價式寫進函數里。如下:

// 算 n 的階乘(假設n不為0) public static int f(int n){if(n <= 2){return n;}// 把 f(n) 的等價操作寫進去return f(n-1) * n; }

?至此,遞歸三要素已經都寫進代碼里了,所以這個 f(n) 功能的內部代碼我們已經寫好了。

這就是遞歸最重要的三要素,每次做遞歸的時候,你就強迫自己試著去尋找這三個要素。

測試一下這個【階乘】:【15就接近int最大值了】

package test; /*** * @author laoshifu* 2021年12月8日*/ public class Action {public static void main(String[] args) {long start = System.currentTimeMillis();System.out.println(f(15));long end = System.currentTimeMillis();System.out.println("消耗時間:"+(end-start));}// 算 n 的階乘(假設n不為0)public static int f(int n){if(n <= 2){return n;}// 把 f(n) 的等價操作寫進去return f(n-1) * n;} }

希望能對大家有所幫助。?

總結

以上是生活随笔為你收集整理的递归_三要素_基础算法必备的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人精品视频ⅴa片软件竹菊 | www.夜夜操.com| 午夜a区 | 给我免费观看片在线电影的 | 午夜剧场免费在线观看 | 91区国产| 精品国产乱码久久久久久久软件 | 精品视频国产 | 在线不卡日韩 | 日韩精品无码一区二区三区久久久 | 国产欧美专区 | 亚洲一本之道 | 美女扒开屁股让男人捅 | 国产乱仑视频 | 在线黄色av| 亚洲精品不卡 | 欧美一区二区久久久 | 绿帽h啪肉np辣文 | www超碰在线 | 亚洲午夜精品视频 | 国内国产精品天干天干 | 久久久久久久亚洲精品 | 免费av影片| 制服丝袜天堂网 | 男人舔女人下部高潮全视频 | jizz一区 | 国产一区二区三区免费观看 | 日本成人免费视频 | 天堂综合网久久 | 欧美在线观看网站 | 欧美色图五月天 | 韩国午夜激情 | 销魂美女一区二区 | 成年人黄色大片 | 97久久久久久 | 欧美国产日韩视频 | 色碰视频 | 在线观看日韩中文字幕 | 一区二区不卡免费视频 | 国产成人无码a区在线观看视频 | 色播视频在线播放 | 性一交一乱一精一晶 | 欧美丰满少妇人妻精品 | 午夜黄色网| 免费在线性爱视频 | 国产精品123 | 日韩三级久久 | 三级黄色片免费观看 | 免费黄色片子 | 久久久久久久久久久久久久免费看 | 亚洲高清色 | 少妇天天干 | 日本少妇videos高潮 | 国产精品美女在线观看 | 日本欧美在线 | 国产又大又黄又粗 | 国产高清成人 | a黄色片 | 精东传媒在线 | 一区二区手机在线 | 熟妇无码乱子成人精品 | 极品销魂美女少妇尤物 | 精品在线观看一区 | 国产免费一区视频观看免费 | 无码人妻精品一区二区蜜桃色欲 | 亚洲日b视频 | 日本免费不卡视频 | 中日韩午夜理伦电影免费 | 日韩伦理中文字幕 | 五月婷婷中文 | 国产精品无码毛片 | 久久无毛 | 欧美久久一区二区 | 国产1级片 | 国产欧美精品区一区二区三区 | 亚洲欧美精品 | 91av手机在线 | 色综合久久久久综合体桃花网 | 神马午夜场 | 9l视频自拍九色9l视频 | 国产婷婷色一区二区在线观看 | 国产一区二区三区四 | 成人免费视屏 | 青草视频免费在线观看 | 国产91在线观看丝袜 | 黄片毛片在线看 | 蜜桃久久一区二区三区 | 亚洲人成网站999久久久综合 | aaa级黄色片 | 91看大片 | 九草在线视频 | 亚州一二区 | 黄黄的网站| 精品五月天 | 最新国产精品 | 亚洲视频高清 | 天堂在线中文 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 人人妻人人爽一区二区三区 |