python之匿名函式與遞迴函式

2021-09-23 18:44:04 字數 2097 閱讀 5297

匿名函式指一類無須定義識別符號的函式或子程式。python用lambda語法定義匿名函式,只需用表示式而無需申明。(省略了用def宣告函式的標準步驟)

計算兩個數的和

匿名函式的應用示例

問題描述: 有乙個整數列表(10個元素), 要求調整元素順序,把所有的奇數放在前面,偶數放在後面。

實現如下:

已知: 函式可以呼叫函式。結論: 乙個函式在內部呼叫自己本身,這個函式就是遞迴函式。

1、 計算階乘 factorial: n! = 1 * 2 * 3 * … * n

具體實現**

def recursive_factorial(num):

"""使用遞迴求num的階乘

"""# 如果num等於0或者1, 返回1;

if num ==1 or num == 0:

return 1

# num的階乘為num*(num-1)!

else:

return num * recursive_factorial(num - 1)

print("2的階乘: ", recursive_factorial(2))

print("0的階乘: ", recursive_factorial(0))

2、斐波那契數列(fibonacci sequence)的實現,f(1)=1,f(2)=1, f(n)=f(n-1)+f(n-2)(n>=3,n∈n*)

具體實現和結果

def f(n):

if n <= 2:

return 1

else:

return f(n - 1) + f(n - 2)

print(f(4)) #輸出菲波那契數列的第4個

print(f(6)) #輸出菲波那契數列的第6個

3、漢諾塔問題

在世界中心貝拿勒斯(在印度北部)的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金片:一次只移動一片,不管在哪根針上,小片必須在大片上面。

具體實現和結果如下:

movecount = 0

def hanoi(n, a='a', b='b', c='c'):

""":param n:盤子個數

:param a:初始塔

:param b:快取塔

:param c:目標塔

:return:移動次數

"""if n == 1:

global movecount

movecount += 1

print(a, "--->", c)

else:

hanoi(n - 1, a, c, b)

hanoi(1, a, b, c)

hanoi(n - 1, b, a, c)

hanoi(3)

print("移動次數:", movecount)

python之遞迴函式 匿名函式

定義 遞迴,就是函式自己呼叫自己 deffunc num int input num if num 2 0 print 是偶數 return else func 匿名函式 2 匿名函式 意義 減少記憶體占用 lambada 定義乙個匿名函式,eg lambad x,b x b 前面是入參eg x,b...

python中的匿名函式與遞迴函式

匿名函式 無需使用def來命名的函式 用到關鍵字lambda 求最大值的匿名函式 max num lambda num1 num2 num1 if num1 num2 else num2 求和sum num lambda num1 num2 num1 num2 多項和 遞迴函式 自己呼叫自己的函式,...

python函式函式巢狀分析步驟與遞迴函式

1 函式巢狀分析步驟 1.name czd 2.def zhangwuji 3.1 name 張無忌 3.2 print name 3.3 def songqingshu 3.4.1 name 宋青書 3.4.2 print name 3.4.3 def zhaomin 3.4.5.1 name 趙...