函式的巢狀呼叫是:函式巢狀函式。函式的遞迴呼叫:它是一種特殊的巢狀呼叫,但是它在呼叫乙個函式的過程中,又直接或間接地呼叫了它自身。1.1直接呼叫
直接呼叫指的是:直接在函式內部呼叫函式自身。
import sys
print(sys.getrecursionlimit()) #列印最大遞迴層數:3000
import sys
sys.setrecursionlimit(10000)
def f(n):
print('from f',n)
f(0)
1.2間接呼叫
間接呼叫指的是:不在原函式體內呼叫函式自身,而是通過其他的方法間接呼叫函式自身。
def func1():
print('func1')
func2()
def func2():
print('func2')
func1()
遞迴必須要有兩個明確的階段:
2.回溯:遞迴必須要有乙個明確的結束條件,在滿足該條件開始一層一層回溯。
遞迴的精髓在於通過不斷地重複逼近乙個最終的結果。
遞迴的本質就是幹重複的活,但是僅僅是普通的重複,我們使用while迴圈就可以了。
比如:計算1+...+5的和
def sum1(i):
if i == 5:
return i
res = sum1(i+1)+i
print(res)
return res
print(sum1(1))
有乙個從小到大排列的整型數字列表,我們判斷某乙個數字是不是在這個列表裡面。
**二分法查詢數字7:
lt = [11,33,55,44,77,1,2,86,100]
# 0 1 2 3 4 5 6 7 8
def findnum(f_num,nums):
if not nums:
print('沒找到')
return
lens = len(nums)//2
if f_num > nums[lens]:
nums = nums[lens+1:]
findnum(f_num,nums)
elif f_num < nums[lens]:
nums = nums[:lens]
findnum(f_num, nums)
else:
print(f'找到了')
lt.sort()
findnum(7,lt)
python中遞迴的使用
python中遞迴函式的使用 defdivision n print n ifn 2 0 returnn 遞迴特性一 必須有乙個明確的結束條件 returndivision n 2 遞迴特性而 每次遞迴都是為了讓問題規模變小 division 10 遞迴特性三 遞迴層次過多會導致棧溢位,且效率不高 ...
python的遞迴 Python 遞迴
鍥子 先看一段函式 defstory s 從前有個山,山里有座廟,廟裡老和尚講故事,講的什麼呢?print s story story 初識遞迴 遞迴的定義 在乙個函式裡再呼叫這個函式本身 現在我們已經大概知道剛剛講的story函式做了什麼,就是在乙個函式裡再呼叫這個函式本身,這種魔性的使用函式的方...
python中遞迴函式的使用
遞迴函式就是自己呼叫自己的函式,遞迴函式使用過程中應注意呼叫深度,否則計算機無法承受。1.使用遞迴函式實現計算某個數的階乘。def fact n if n 1 return 1return n fact n 1 print fact n 其中n為某個數。1.2用遞迴函式來實現獲取斐波拉契數列中的第n...