1、打出主函數(shù)defs(n):ifn=1。

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的松嶺網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
2、在打出條件函數(shù)return1else:result=n+s(n-1)return.result。
3、最后結(jié)尾返回函數(shù)的值result=s(10)print(result)。
使用go語言遞歸查找指定目錄下的文件,根據(jù)正則匹配篩選出需要的文件,并且忽略指定的目錄
先使用 ioutil.ReadDir 遍歷出指定目錄下的文件,再遞歸進(jìn)目錄中遍歷,問題的關(guān)鍵在于識別出文件為目錄, fs.FileInfo 中有一個 IsDir() 函數(shù)可以識別是否是目錄
正則匹配使用 regexp.MatchString ,regexp中有很多正則操作的工具,如根據(jù)正則替換字符串中的指定字符
Func函數(shù)是包含在Function和End Function語句之間的一組VBScript語句。
Func函數(shù)與Sub過程類似。但Func函數(shù)可以有返回值。可以使用參數(shù)。如果Func函數(shù)沒有任何參數(shù),則Function語句必須要包含空括號。Func函數(shù)通過函數(shù)名返回一個值。返回值的數(shù)據(jù)類型是Variant。
語法: Function 函數(shù)名 (參數(shù)1,參數(shù)2,...)
...
End Function
func在go語言中的使用:
在 Go 語言中,函數(shù)聲明通用語法如下:
func functionname(parametername type) returntype {??
// 函數(shù)體(具體實(shí)現(xiàn)的功能)
}
函數(shù)的聲明以關(guān)鍵詞 func 開始,后面緊跟自定義的函數(shù)名 functionname (函數(shù)名)。函數(shù)的參數(shù)列表定義在 ( 和 ) 之間,返回值的類型則定義在之后的 returntype (返回值類型)處。
聲明一個參數(shù)的語法采用 參數(shù)名 參數(shù)類型 的方式,任意多個參數(shù)采用類似 (parameter1 type, parameter2 type) 即(參數(shù)1 參數(shù)1的類型,參數(shù)2 參數(shù)2的類型)的形式指定。之后包含在 { 和 } 之間的代碼,就是函數(shù)體。
給定一個正整數(shù)n計算出對應(yīng)斐波那契數(shù)列對應(yīng)的值
說明:
用mackbookpro i7 2.7GHZ筆記本進(jìn)行測試,結(jié)果如下:
備注: 當(dāng)n=80時,由于測試等待時間過長,強(qiáng)制中斷了執(zhí)行。
從測試結(jié)果看出,當(dāng)n逐漸增大,遞歸方式計算斐波拉契數(shù)列的時間復(fù)雜性急劇增加。當(dāng)n值較大時可以考慮用循環(huán)方式代替。
類似的方式也可以用于,求階乘、遍歷目錄、漢諾塔等問題的解決。在后期的文章中,我將這些內(nèi)容進(jìn)行補(bǔ)充,敬請期待,謝謝。
GO是編譯性語言,所以函數(shù)的順序是無關(guān)緊要的,為了方便閱讀,建議入口函數(shù) main 寫在最前面,其余函數(shù)按照功能需要進(jìn)行排列
GO的函數(shù) 不支持嵌套,重載和默認(rèn)參數(shù)
GO的函數(shù) 支持 無需聲明變量,可變長度,多返回值,匿名,閉包等
GO的函數(shù)用 func 來聲明,且左大括號 { 不能另起一行
一個簡單的示例:
輸出為:
參數(shù):可以傳0個或多個值來供自己用
返回:通過用 return 來進(jìn)行返回
輸出為:
上面就是一個典型的多參數(shù)傳遞與多返回值
對例子的說明:
按值傳遞:是對某個變量進(jìn)行復(fù)制,不能更改原變量的值
引用傳遞:相當(dāng)于按指針傳遞,可以同時改變原來的值,并且消耗的內(nèi)存會更少,只有4或8個字節(jié)的消耗
在上例中,返回值 (d int, e int, f int) { 是進(jìn)行了命名,如果不想命名可以寫成 (int,int,int){ ,返回的結(jié)果都是一樣的,但要注意:
當(dāng)返回了多個值,我們某些變量不想要,或?qū)嶋H用不到,我們可以使用 _ 來補(bǔ)位,例如上例的返回我們可以寫成 d,_,f := test(a,b,c) ,我們不想要中間的返回值,可以以這種形式來舍棄掉
在參數(shù)后面以 變量 ... type 這種形式的,我們就要以判斷出這是一個可變長度的參數(shù)
輸出為:
在上例中, strs ...string 中, strs 的實(shí)際值是b,c,d,e,這就是一個最簡單的傳遞可變長度的參數(shù)的例子,更多一些演變的形式,都非常類似
在GO中 defer 關(guān)鍵字非常重要,相當(dāng)于面相對像中的析構(gòu)函數(shù),也就是在某個函數(shù)執(zhí)行完成后,GO會自動這個;
如果在多層循環(huán)中函數(shù)里,都定義了 defer ,那么它的執(zhí)行順序是先進(jìn)后出;
當(dāng)某個函數(shù)出現(xiàn)嚴(yán)重錯誤時, defer 也會被調(diào)用
輸出為
這是一個最簡單的測試了,當(dāng)然還有更復(fù)雜的調(diào)用,比如調(diào)試程序時,判斷是哪個函數(shù)出了問題,完全可以根據(jù) defer 打印出來的內(nèi)容來進(jìn)行判斷,非常快速,這種留給你們?nèi)?shí)現(xiàn)
一個函數(shù)在函數(shù)體內(nèi)自己調(diào)用自己我們稱之為遞歸函數(shù),在做遞歸調(diào)用時,經(jīng)常會將內(nèi)存給占滿,這是非常要注意的,常用的比如,快速排序就是用的遞歸調(diào)用
本篇重點(diǎn)介紹了GO函數(shù)(func)的聲明與使用,下一篇將介紹GO的結(jié)構(gòu) struct
網(wǎng)站題目:go語言中遞歸函數(shù) go 遞歸
URL網(wǎng)址:http://chinadenli.net/article12/hghjgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、、網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站導(dǎo)航、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)