前言
本篇繼續收集一些常見的python筆試題,以基礎知識為主,遞迴是面試最喜歡考的乙個問題,不管是做開發還是測試,都無法避免考遞迴。本篇結合實際案例,講下幾種關於遞迴的場景。
計算n!,例如n=3(計算321=6), 求10!
方法1:可以用python裡面的reduce函式,reduce() 函式會對引數序列中元素進行累積。
函式將乙個資料集合(鍊錶,元組等)中的所有資料進行下列操作:用傳給 reduce 中的函式 function(有兩個引數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個資料用 function 函式運算,最後得到乙個結果。
from functools import reduce
# 方法1:推薦!
a = 10
b = reduce(lambda x, y: x*y, range(1, a+1))
print(b)
如果不想用lamdba函式,可以定義乙個函式
from functools import reduce
def chengfa(x, y):
return x*y
a = 10
b = reduce(chengfa, range(1, a+1))
print(b)
方法2:自己寫個遞迴函式def digui(n):
if n == 1:
return 1
else:
return n*digui(n-1)
a = 10
print(digui(a))
a = 10
s = 1
for i in range(1, a+1):
s = s*i
print(s)
已知乙個數列:1、1、2、3、5、8、13、。。。。的規律為從3開始的每一項都等於其前兩項的和,這是斐波那契數列。求滿足規律的100以內的所以資料
a = 0
b = 1
while b < 100:
print(b, end=",")
a, b = b, a+b
計算x的n次方,如:3的4次方 為3*3*3*3=81
def mi(x, n):
'''計算x 的n 次方'''
if n == 0:
return 1
else:
return x*mi(x, n-1)
x = 3
num = 4
print(mi(x, num))
漢諾塔:漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤
當只有乙個盤子的時候,只需要從將a塔上的乙個盤子移到c塔上。
當a塔上有兩個盤子是,先將a塔上的1號盤子(編號從上到下)移動到b塔上,再將a塔上的2號盤子移動的c塔上,最後將b塔上的小盤子移動到c塔上。
當a塔上有3個盤子時,先將a塔上編號1至2的盤子(共2個)移動到b塔上(需借助c塔),然後將a塔上的3號最大的盤子移動到c塔,最後將b塔上的兩個盤子借助a塔移動到c塔上。
當a塔上有n個盤子是,先將a塔上編號1至n-1的盤子(共n-1個)移動到b塔上(借助c塔),然後將a塔上最大的n號盤子移動到c塔上,最後將b塔上的n-1個盤子借助a塔移動到c塔上。
綜上所述,除了只有乙個盤子時不需要借助其他塔外,其餘情況均一樣(只是事件的複雜程度不一樣)。
def hanoi(n, a, b, c):
'''漢諾塔問題'''
if n == 1:
print(a, '-->', c)
else:
hanoi(n - 1, a, c, b)
print(a, '-->', c)
hanoi(n - 1, b, a, c)
hanoi(5, 'a', 'b', 'c')
一般漢諾塔問題不會經常考,前面幾個考的比較頻繁 5 python教程 函式
coding utf 8 表示檔案的編碼是utf8 fun1的函式體為空 需要使用pass語句佔位,因為函式體至少要有乙個句 對編寫框架程式有用處 def fun1 pass 乙個最簡單的函式,輸入乙個數,返回這個數的兩倍 def fun2 i return i 2 返回多個值,返回值是乙個元組 d...
5 python 文字解析
5.python 文字解析 這一章節我們簡單的聊聊文字解析的兩種方法 1.分片,通過分片,記錄偏移處,然後提取想要的字串 例子 line aaa bbb ccc col1 line 0 3 col3 line 8 col1 aaa col3 ccc 2.split line aaa bbb ccc ...
Python基礎5 Python字典
字典的基本操作 建立字典 字典中儲存的是鍵值對,鍵和值用 分割,每個鍵值對之間用逗號分割,所有元素用 括起來 字典中元素的鍵必須唯一且不可變 examdict print examdict 訪問字典中的值 print examdict name tina 新增字典元素 examdict age 30...