1.描述:
- 遞回函式:在函式內部,可以呼叫其他函式,如果一個函式在內部呼叫自身本身,這個函式就是遞回函式,
2.遞回函式特性:
- 必須有一個明確的結束條件;
- 每次進入更深一層遞回時,問題規模相比上次遞回都應有所減少
- 相鄰兩次重復之間有緊密的聯系,前一次要為后一次做準備(通常前一次的輸出就作為后一次的輸入),
3.實體說明
- 計算階乘 n! = 1 * 2 * 3 * ... * n,,用函式 fact(n) 表示, 可以看出:fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n,所以,fact(n) 可以表示為 n * fact(n-1),只有 n = 1 時需要特殊處理
#相加計算,遞回方式 def fact(n): if n > 0: return fact(n-1) + n else: return 0 print(fact(5))
4.實體應用
#找出介面報文中某個欄位的值 queryUserList = { "code": "200", "msg": "查詢用戶成功!", "model": { "user1": { "userAccount": "17779828882", "userName": "zhengying2", "userMobile": "17779828882", "userEmail": "[email protected]" }, "user2": { "userAccount": "17779828881", "userName": "zhengying1", "userMobile": "17779828881", "userEmail": "[email protected]" }, "user3": { "userAccount": "17779828880", "userName": "zhengying0", "userMobile": "17779828880", "userEmail": "[email protected]" }, "user4": { "userAccount": "admin", "userName": "admin", "userMobile": "", "userEmail": "" }, "pages": 1 } } #代碼如下 values = [] def get_value(getkey,dict1): if isinstance(dict1,dict): #驗證入參格式是否為字典 for k,v in dict1.items(): #取出所以的鍵值對 if k == getkey: #判斷所拿到的鍵是否是預期傳入的鍵 values.append(v) get_value(getkey,v) #進行遞回 get_value("userEmail",queryUserList) print(values)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/187332.html
標籤:Python
上一篇:第六章第三十一題(金融應用:信用卡號的合法性驗證)(Financial: credit card number validation) - 編程練習題答案
