python 函式的遞迴呼叫

2022-03-15 15:17:33 字數 1284 閱讀 5378

什麼是函式遞迴:

1.函式的遞迴呼叫是函式的特殊的一種呼叫方式

2.函式的遞迴呼叫是指函式直接的或則間接的呼叫了自己本身

#  例如

def f1():

print('這是f1')

f1() # 直接呼叫了自己本身

def f2():

print('這是f2')

f3()

def f3():

print('這是f3')

f2() # 間接的呼叫了自己本身

3.python對函式的遞迴呼叫迴圈是有次數的限制的為1000次

4.函式的遞迴呼叫應該是有終止條件的,不然就變成了無限迴圈呼叫 沒有意義了

回溯與遞推

下面我們用乙個淺顯的例子,為了讓讀者闡釋遞迴的原理和使用:

例4.5

某公司四個員工坐在一起,問第四個人薪水,他說比第三個人多1000,問第三個人薪水,第他說比第二個人多1000,問第二個人薪水,他說比第乙個人多1000,最後第一人說自己每月5000,請問第四個人的薪水是多少?

思路解析:

要知道第四個人的月薪,就必須知道第三個人的,第三個人的又取決於第二個人的,第二個人的又取決於第乙個人的,而且每乙個員工都比前乙個多一千,數學表示式即:

salary(4)=salary(3)+1000 

salary(3)=salary(2)+1000

salary(2)=salary(1)+1000

salary(1)=5000

總結為:

salary(n)=salary(n-1)+1000 (n>1)

salary(1)=5000 (n=1)

很明顯這是乙個遞迴的過程,可以將該過程分為兩個階段:回溯和遞推。

​ 在回溯階段,要求第n個員工的薪水,需要回溯得到(n-1)個員工的薪水,以此類推,直到得到第乙個員工的薪水,此時,salary(1)已知,因而不必再向前回溯了。然後進入遞推階段:從第乙個員工的薪水可以推算出第二個員工的薪水(6000),從第二個員工的薪水可以推算出第三個員工的薪水(7000),以此類推,一直推算出第第四個員工的薪水(8000)為止,遞迴結束。需要注意的一點是,遞迴一定要有乙個結束條件,這裡n=1就是結束條件。

**表示式

def salary(n):

if n==1:

return 5000

return salary(n-1)+1000

s=salary(4)

print(s)

Python 函式的遞迴呼叫

函式的遞迴呼叫 是函式巢狀呼叫的一種特殊形式 具體是指在呼叫乙個函式的過程中又直接或者間接地呼叫到本身 def f1 print 是我是我還是我 f1 f1 間接接呼叫本身 def f1 print f1 f2 def f2 print f2 f1 f1 一段 的迴圈執行的方案有兩種 while t...

Python 函式遞迴呼叫

案例一 漢諾塔 例一 def move n,a,buffer,c if n 1 print move a,c else move n 1,a,c,buffer move 1,a,buffer,c move n 1,buffer,a,c move 3,a b c 例二 def hanoi n,x,y,...

函式的遞迴呼叫

乙個函式在它的函式體內呼叫它自身稱為遞迴呼叫。這種函式稱為遞迴函式。c語言允許函式的遞迴呼叫。在遞迴呼叫中,主調函式又是被調函式。執行遞迴函式將反覆呼叫其自身。每呼叫一次就進入新的一層。例如有函式f如下 int f int x 這個函式是乙個遞迴函式。但是執行該函式將無休止地呼叫其自身,這當然是不正...