pythond 遞迴之找數字遊戲

2022-08-10 05:24:14 字數 2317 閱讀 7389

函式遞迴(用在你不知道要迴圈多少次)

1.必須有乙個明確的結束條件

2.每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少

3.遞迴效率不高,遞迴的層次過多會導致棧溢位(在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀,由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位)

#有五個人,他們的歲數是遞減2歲,到第五個人的時候是10歲,問你第乙個人多少歲

def age(n):

if n==1:

return 10

else:

return age(n-1)+2

print(age(5))

輸入乙個數字,在已有的列表列面查詢是否有這個數字。注:**是在python3.0所編寫。

二分法例項1、

data=[1,3,5,6,7,8,11,14,16,18,23,33,37,39,42,47,50]

defsearch(num,data):

if len(data)>1:

m = int(len(data) / 2)

if numprint('

在%s左邊

'%data[m])

data =data[:m]

search(num,data)

elif num>data[m]:

print('

在%s右邊

'%data[m])

data =data[m:]

search(num,data)

else

:

print('

找到了%s

'%data[m])

return

else

:

if data[0]==num:

print("

找到了"

)

else

:

print('

沒有找到')

search(1,data)

二分法例項2、

import

random

tuple_a = [(10,15),(16,23),(25,29),(30,35),(37,42),(50,60),(61,65),(70,80),(81,85),(90,100)]

b = random.randrange(100)

print("

num:

",b)

defsearch_index(b,tuple_pre):

min_index =0

max_index = len(tuple_pre) - 1

if b < tuple_pre[min_index][0] or b > tuple_pre[max_index][1]:return

"not found!

"while

true:

center_index = int((max_index + min_index) / 2)

front_tuple = tuple_pre[center_index -1]

print('

-->

',front_tuple)

if b >= tuple_pre[center_index][0] and b <= tuple_pre[center_index][1]:

return

"index:%s\nrange:%s

"%(center_index,tuple_pre[center_index])

elif b if b > front_tuple[1]:return

"not found!

"max_index = center_index - 1

elif b > tuple_pre[center_index][1]:

if breturn

'no found

'min_index = center_index + 1res =search_index(b,tuple_a)

print(res)

函式式程式設計就是一種抽象程度很高的程式設計正規化,純粹的函式式程式語言編寫的函式沒有變數,因此,任意乙個函式,只要輸入是確定的,輸出就是確定的,這種純函式我們稱之為沒有***。而允許使用變數的程式語言,由於函式內部的變數狀態不確定,同樣的輸入,可能得到不同的輸出,因此,這種函式是有***的。

函式式程式設計的乙個特點就是,允許把函式本身作為引數傳入另乙個函式,還允許返回乙個函式!

不會修改狀態,精簡,結果唯一!

找數字 遞迴,二分查詢

題目 在一從大到小排序的序列中用遞迴找乙個數在不在這序列,在輸出yes,不在輸出no 這題用了二分查詢的遞迴實現 思路 把陣列和變數都變成全域性變數方便遞迴函式修改 然後如果不可能就跳出迴圈 如果可能但現在沒找到就縮小範圍進入下乙個遞迴過程 如果找到了就輸出 includeusing namespa...

數字DP之找等凹數字

include include include include include include include include include include include include using namespace std long long dp 20 20 10 2 2 2 int nu...

遞迴之數字黑洞

數學黑洞 time limit 1500 ms memory limit 65536 kib submit statistic discuss problem description 任意乙個4位自然數n n不能是4個數字一樣,如1111 2222 9999是不可以的,n也不能是6174 將組成自然...