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

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

更新時間:2017-08-23 來源:黑馬程序員python培訓學院 瀏覽量:

一、函數(shù)

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

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

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

def function(params):
   block    return expression/value

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

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

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

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




二、遞歸

程序調(diào)用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設(shè)計語言中廣泛應(yīng)用。 一個過程或函數(shù)在其定義或說明中有直接或間接調(diào)用自身的一種方法,它通常把一個大型復雜的問題層層轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。

在使用遞歸時,需要注意以下幾點:

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

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

下面的這個圖也可以很好地說明遞歸概念。


1503456550298_20170803184926613.png


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

作者:黑馬程序員Python培訓學院

首發(fā):http://www.pantone-color.com.cn/news/python.html


分享到:
在線咨詢 我要報名
和我們在線交談!