學(xué)Python的015天

原創(chuàng):XIAO油菜花
學(xué)習(xí)進(jìn)度記錄:
《零基礎(chǔ)入門學(xué)習(xí)Python》P25:遞歸:小兔子,漢諾塔
《Python開發(fā)入門與爬蟲項(xiàng)目實(shí)戰(zhàn)》:Python中的函數(shù):遞歸查找

實(shí)戰(zhàn)
今天的課程竟然沒有課后習(xí)題哦,直接進(jìn)入實(shí)戰(zhàn),有沒有感到驚喜和意外?O(∩_∩)O哈哈~
0.使用遞歸編寫一個(gè)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的函數(shù)(要求采用“取2取余”的方式,結(jié)果與調(diào)用bin()一樣返回字符串形式)。

def bin(x):
    result = ''
    
    if dec:
        result = bin(x//2)
        return result + str(x%2)
    else:
        return result

1.寫一個(gè)函數(shù)get_digits(n),將參數(shù)n分解出每個(gè)位的數(shù)字并按順序存放到列表中。舉例:get_digits(12345) ==> [1, 2, 3, 4, 5]
解題思路:利用除以10取余數(shù)的方式,每次調(diào)用get_digits(n//10),并將余數(shù)存放到列表中即可。要注意的是結(jié)束條件設(shè)置正確。

result = []
def get_digits(n):
        if n > 0:
            result.insert(0, n%10)
            get_digits(n//10)

get_digits(12345)
print(result)

2.還記得求回文字符串那道題嗎?現(xiàn)在讓你使用遞歸的方式來求解,親還能驕傲的說我可以嗎:判斷傳入的字符串參數(shù)是否為“回文聯(lián)”(回文聯(lián)即用回文形式寫成的對聯(lián),既可順讀,也可倒讀。例如:上海自來水來自海上)

def palindrome(n, start, end):
    if start > end:
        return 1     
    else:
        return palindrome(n, start+1, end-1) if n[start] == n[end] else 0
        
string = input('請輸入一串字符串:')
length = len(string)-1

if palindrome(string, 0, length):
    print('"%s"是回文字符串!' % string)
else:
    print('"%s"不是回文字符串!' % string)

3.使用遞歸編程求解以下問題:有5個(gè)人坐在一起,問第五個(gè)人多少歲?他說比第4個(gè)人大2歲。問第4個(gè)人歲數(shù),他說比第3個(gè)人大2歲。問第三個(gè)人,又說比第2人大兩歲。問第2個(gè)人,說比第一個(gè)人大兩歲。最后問第一個(gè)人,他說是10歲。請問第五個(gè)人多大?

def age(n):
    if n == 1:
        return 10
    else:
        return age(n-1) + 2
        
print('哈哈,我知道了,第五個(gè)人的年齡是 %d 歲!' % age(5))

如果你關(guān)注了我,希望你監(jiān)督我,鼓勵我,與我一起學(xué)習(xí),一起成長!?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容