欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 有趣的算法

Python語言在算法領(lǐng)域中被廣泛使用,它不僅提供了許多有趣的算法,同時(shí)也非常適合初學(xué)者學(xué)習(xí)。下面介紹一些有趣的Python算法。

#1. 階乘計(jì)算
#計(jì)算n的階乘,即 n! = n*(n-1)*(n-2)*...*1
def factorial(n):
result = 1
for i in range(1, n+1):
result *= i
return result
#測(cè)試代碼
print(factorial(5)) #輸出120

上述代碼實(shí)現(xiàn)了計(jì)算一個(gè)數(shù)的階乘的功能,通過循環(huán)遞增的方式相乘,得出最終結(jié)果。

#2. 斐波那契數(shù)列
#斐波那契數(shù)列是指每個(gè)數(shù)都是前兩個(gè)數(shù)的和,如1, 1, 2, 3, 5, 8, 13, 21...
def fibonacci(n):
if n == 0 or n == 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
#測(cè)試代碼
print([fibonacci(i) for i in range(10)]) #輸出[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

上述代碼實(shí)現(xiàn)了計(jì)算斐波那契數(shù)列的功能,通過遞歸方式實(shí)現(xiàn)。

#3. 漢諾塔
#漢諾塔是經(jīng)典的遞歸問題,需要將n個(gè)盤子從A柱移動(dòng)到C柱,其中B柱可作為緩存
def hanoi(n, A, B, C):
if n == 1:
print(A, "-->", C)
else:
hanoi(n-1, A, C, B) #將A上面n-1個(gè)盤子借助C移動(dòng)到B
print(A, "-->", C) #將A上剩下的一個(gè)盤子移動(dòng)到C
hanoi(n-1, B, A, C) #將B上面n-1個(gè)盤子借助A移動(dòng)到C
#測(cè)試代碼
hanoi(3, "A", "B", "C") #輸出A -->C, A -->B, C -->B, A -->C, B -->A, B -->C, A -->C

上述代碼實(shí)現(xiàn)了經(jīng)典的漢諾塔問題,通過遞歸實(shí)現(xiàn)將A上的n個(gè)盤子借助B移動(dòng)到C,通過不斷縮小問題規(guī)模的方式簡(jiǎn)化計(jì)算。

Python提供了許多有趣的算法,無論是初學(xué)者還是專業(yè)人士都可以從中受益。