.說明遞歸: 在函數中調用自身函數
*最大遞歸次數默認是 997/998次
*為python從內存角度出發作的限制
*可使用 setrecursionlimit() 來修改限制上限,但會依照內存停止
*如果遞歸次數太多,不是適合使用遞歸來解決問題
*遞歸的缺點: 佔內存
*遞歸的優點: 會讓代碼變簡單
.算法 --二分查找算法
.三級菜單
*執行可以修改遞歸上限
import sys sys.setrecursionlimit(900000000) #修改上限 n = 0 def story(): global n n += 1 print(n) story() story()
遞歸舉例:
趙雲 今年幾歲?
趙雲 比 魏延 大兩歲
魏延 今年幾歲??
魏延 比黃蓋 大兩歲
黃蓋 今年幾歲?
黃蓋 比 劉備 大兩歲
劉備 今年幾歲??
劉備 40了
趙雲 今年幾歲? n = 1 age(1) = age(2)+2 = age(n+1) + 2 趙雲 比 魏延 大兩歲 魏延 今年幾歲?? n = 2 age(2) = age(3) + 2 = age(n+1) +2 魏延 比黃蓋 大兩歲 黃蓋 今年幾歲? n = 3 age(3) = age(4) + 2 = age(n+1) +2 黃蓋 比 劉備 大兩歲 劉備 今年幾歲?? 劉備 40了 n = 4 age(4) = 40
n = 4 age(4) = 40n < 4 age(n) = age(n+1) +2.寫成函數def age(n) : if n == 4: return 40 elif n > 0 and n < 4 : return age(n+1) + 2print(age(1))運行結果:46.拆解看def age(1): if 1 == 4: return 40 elif 1 > 0 and 1 < 4: return 46 def age(2): if 2 == 4: return 40 elif 2 >0 and 2 < 4: age(3) + 2 None +2 def age(3): if 3 == 4: return 40 elif 3 >0 and 3 < 4: 42 def age(4): if 4 == 4: return 40 elif n >0 and n < 4:
沒有留言:
張貼留言