首頁(yè)技術(shù)文章正文

Python培訓(xùn)之Python中的函數(shù)與遞歸

更新時(shí)間:2017-08-23 來(lái)源:黑馬程序員python培訓(xùn)學(xué)院 瀏覽量:

一、函數(shù)

函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。無(wú)論在哪門編程語(yǔ)言當(dāng)中,函數(shù)(在某些語(yǔ)言里稱作方法,意義是相同的)都扮演著至關(guān)重要的角色。函數(shù)能提高應(yīng)用的模塊性和代碼的重復(fù)利用率。

Python提供了許多內(nèi)建函數(shù),比如print(),你可以直接使用,當(dāng)然你也可以自己創(chuàng)建函數(shù),這叫做用戶自定義函數(shù)。

在一些編程語(yǔ)言當(dāng)中,函數(shù)聲明和函數(shù)定義是區(qū)分開的,比如C語(yǔ)言,函數(shù)聲明和函數(shù)定義可以出現(xiàn)在不同的文件中,但在Python中,函數(shù)聲明和函數(shù)定義是視為一體的。比如:

def function(params):
   block    return expression/value

在定義了函數(shù)之后,就可以使用該函數(shù)了,但是在Python中要注意一個(gè)問(wèn)題,就是在Python中不允許前向引用,即在函數(shù)定義之前,不允許調(diào)用該函數(shù)。

下面是函數(shù)定義與調(diào)用的一個(gè)示例:

# 定義函數(shù)def printme( str ):
  "打印傳入的字符串"
  print str;   return;

# 調(diào)用函數(shù)printme("調(diào)用用戶自定義函數(shù)!");




二、遞歸

程序調(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ì)算,大大地減少了程序的代碼量。

在使用遞歸時(shí),需要注意以下幾點(diǎn):

遞歸就是在過(guò)程或函數(shù)里調(diào)用自身 必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口。 注意: 切勿忘記遞歸出口,避免函數(shù)無(wú)限調(diào)用。

從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事!講的什么故事呢?『從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事!講的什么故事呢?』…… 
不斷調(diào)用這個(gè)故事的內(nèi)容,這就是遞歸。這個(gè)故事可以一直講下去,這就是沒(méi)有遞歸出口,造成了死循環(huán)。

下面的這個(gè)圖也可以很好地說(shuō)明遞歸概念。


1503456550298_20170803184926613.png


本文版權(quán)歸黑馬程序員Python培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!

作者:黑馬程序員Python培訓(xùn)學(xué)院

首發(fā):http://m.3rdspacecomics.com/news/python.html


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!