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è)人士都可以從中受益。