python遞迴的使用

2022-03-05 13:43:36 字數 1410 閱讀 8409

函式的巢狀呼叫是:函式巢狀函式。函式的遞迴呼叫:它是一種特殊的巢狀呼叫,但是它在呼叫乙個函式的過程中,又直接或間接地呼叫了它自身。

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...