Python 17

一. 課上代碼

#使用遞歸來(lái)求解階乘運(yùn)算
def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n - 1)

number = int(input("請(qǐng)輸入一個(gè)正整數(shù):"))
result = factorial(number)
print("%d的階乘是:%d" % (number, result))
#使用普通迭代來(lái)求fibonacci數(shù)列
def fibonacci(n):
    n1 = 1
    n2 = 1
    n3 = 1
    
    if n < 1:
        print("Your input is wrong!")
        return -1
        
    while (n - 2) > 0:
        n3 = n2 + n1
        n1 = n2
        n2 = n3
        n -= 1
    return n3
    
result = fibonacci(20)
if result != -1:
    print(result)

#使用遞歸來(lái)求fibonacci數(shù)列
def fibonacci(n):
    if n < 1:
        print("輸入有誤渔彰!")
        return -1
    
    if n == 1:
        return 1
    elif n == 2:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)

number = int(input("請(qǐng)輸入一個(gè)正整數(shù):"))
result = fibonacci(number)
if result != -1:
    print(result)
#遞歸的缺點(diǎn)在于爬坑,如果n很大的情況下砂沛,計(jì)算會(huì)很慢

遞歸求解漢諾塔游戲

  • 對(duì)于游戲的玩法渣淳,可以分解為三個(gè)步驟:
  1. 將前63個(gè)盤(pán)子從X移動(dòng)到Y(jié)上
  2. 將最底下的第64個(gè)盤(pán)子從X移動(dòng)到Z上
  3. 將Y上的63個(gè)盤(pán)子移動(dòng)到Z上
  • 問(wèn)題一:將X上的63個(gè)盤(pán)子借助Z移動(dòng)到Y(jié)上
  • 問(wèn)題二:將Y上的63個(gè)盤(pán)子借助X移動(dòng)到Z上
  • 問(wèn)題一可以拆解為:
  1. 將前62個(gè)盤(pán)子從X移動(dòng)到Z上
  2. 將最底下的第63個(gè)盤(pán)子移動(dòng)到Y(jié)上
  3. 將Z上的62個(gè)盤(pán)子移動(dòng)到Y(jié)上
  • 問(wèn)題二可以拆解為:
  1. 將前62個(gè)盤(pán)子從Y移動(dòng)到X上
  2. 將最底下的第63個(gè)盤(pán)子移動(dòng)到Z上
  3. 將X上的第62個(gè)盤(pán)子移動(dòng)到Y(jié)上
#遞歸求解漢諾塔游戲
def hanoi(n, x, y, z):
    if n == 1:
        print(x, '-->', z)
    else:
        hanoi(n - 1, x, z, y)  #將前n-1個(gè)盤(pán)子從x移動(dòng)到y(tǒng)上
        print(x, '-->', z)  #將最底下的最后一個(gè)盤(pán)子從x移動(dòng)到z上
        hanoi(n - 1, y, x, z)  #將y上的n-1個(gè)盤(pán)子移動(dòng)到z上

n = int(input("請(qǐng)輸入漢諾塔的層數(shù):"))
hanoi(n, 'X', 'Y', 'Z')

二. 動(dòng)動(dòng)手

  1. 使用遞歸編寫(xiě)一個(gè)power()函數(shù)模擬內(nèi)建函數(shù)pow()歼指,即power(x, y)為計(jì)算并返回x的y次冪的值
def power(x, y):
    if y:
        return x * power(x, y - 1)
    else:
        return 1

print(power(2, 3))
  1. 使用遞歸編寫(xiě)一個(gè)函數(shù)寝凌,利用歐幾里得算法求最大公約數(shù)畔濒,例如gcd(x, y)返回值為參數(shù)x和參數(shù)y的最大公約數(shù)
def gcd(x, y):
    if y:
        return gcd(y, x % y)
    else:
        return x

print(gcd(4, 6))
  1. 使用遞歸編寫(xiě)一個(gè)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的函數(shù)(要求采用取2取余的方式洋满,結(jié)果與調(diào)用bin()一樣返回字符串形式)
def Dec2Bin(dec):
    result = ''

    if dec:
        result = Dec2Bin(dec // 2)
        return result + str(dec % 2)
    else:
        return result

print(Dec2Bin(62))
  1. 寫(xiě)一個(gè)函數(shù)get_digits(n)晶乔,將參數(shù)n分解出每個(gè)位的數(shù)字并按順序存放到列表中。舉例:get_digits(12345) ==>[1, 2, 3, 4, 5]
#personal code
result1 = []
result = []
def Get_digits(n):
    if n > 0:
        result1 = n % 10
        result.append(result1)
        Get_digits(n // 10)

Get_digits(12345)
result.reverse()
print(result)
#Reference code
result = []
def Get_digits(n):
    if n > 0:
        result.insert(0, n % 10)
        Get_digits(n // 10)

Get_digits(12345)
print(result)
  1. 使用遞歸編程求解一下問(wèn)題:有5個(gè)人坐在一起牺勾,問(wèn)第五個(gè)人多少歲正罢?他說(shuō)比第4個(gè)人大2歲。問(wèn)第4個(gè)人歲數(shù)驻民,他說(shuō)比第3個(gè)人大2歲翻具。問(wèn)第三個(gè)人,他說(shuō)比第二個(gè)人大兩歲回还。問(wèn)第二個(gè)人裆泳,他說(shuō)比第一個(gè)人大兩歲。最后問(wèn)第一個(gè)人柠硕,他說(shuō)是10歲工禾。請(qǐng)問(wèn)第五個(gè)人多大运提?
age = 0
def age(n):
    if n == 1:
        return 10
    else:
        return age(n - 1) + 2
print(age(5))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市闻葵,隨后出現(xiàn)的幾起案子民泵,更是在濱河造成了極大的恐慌,老刑警劉巖槽畔,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栈妆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡厢钧,警方通過(guò)查閱死者的電腦和手機(jī)鳞尔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)早直,“玉大人铅檩,你說(shuō)我怎么就攤上這事∶Ш瑁” “怎么了昧旨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)祥得。 經(jīng)常有香客問(wèn)我兔沃,道長(zhǎng),這世上最難降的妖魔是什么级及? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任乒疏,我火速辦了婚禮,結(jié)果婚禮上饮焦,老公的妹妹穿的比我還像新娘怕吴。我一直安慰自己,他們只是感情好县踢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布转绷。 她就那樣靜靜地躺著,像睡著了一般硼啤。 火紅的嫁衣襯著肌膚如雪议经。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天谴返,我揣著相機(jī)與錄音煞肾,去河邊找鬼。 笑死嗓袱,一個(gè)胖子當(dāng)著我的面吹牛籍救,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播渠抹,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蝙昙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼闪萄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起耸黑,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤桃煎,失蹤者是張志新(化名)和其女友劉穎篮幢,沒(méi)想到半個(gè)月后大刊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡三椿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年缺菌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搜锰。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伴郁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛋叼,到底是詐尸還是另有隱情焊傅,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布狈涮,位于F島的核電站狐胎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏歌馍。R本人自食惡果不足惜握巢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望松却。 院中可真熱鬧暴浦,春花似錦、人聲如沸晓锻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)砚哆。三九已至同规,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窟社,已是汗流浹背券勺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灿里,地道東北人关炼。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像匣吊,于是被迫代替她去往敵國(guó)和親儒拂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寸潦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 6.3 遍歷字典 可以遍歷字典的所有鍵-值對(duì)、鍵或值社痛。 6.3.1 遍歷所有的鍵-值對(duì) 用于編歷字典的for循環(huán)见转,...
    三千院賀Hall閱讀 221評(píng)論 1 0
  • 首頁(yè) 資訊 文章 資源 小組 相親 登錄 注冊(cè) 首頁(yè) 最新文章 IT 職場(chǎng) 前端 后端 移動(dòng)端 數(shù)據(jù)庫(kù) 運(yùn)維 其他...
    Helen_Cat閱讀 3,874評(píng)論 1 10
  • TF API數(shù)學(xué)計(jì)算tf...... :math(1)剛開(kāi)始先給一個(gè)運(yùn)行實(shí)例。tf是基于圖(Graph)的計(jì)算系統(tǒng)...
    MachineLP閱讀 3,463評(píng)論 0 1
  • 3 2013年5月7日蒜哀,和往常一樣斩箫,上課,下課撵儿,吃飯乘客,學(xué)習(xí),然后伴著放學(xué)的鈴聲第一個(gè)沖出教室淀歇,我們學(xué)校是五點(diǎn)下課易核,...
    陌漓_閱讀 411評(píng)論 5 6
  • 文/大盆兒 2013年5月份兒牡直,我從家鄉(xiāng)的小城來(lái)到了繁華的上海,人總得有追求纳决,總得可以為了自己的夢(mèng)想來(lái)一次奮不顧身...
    penpen夢(mèng)瑤閱讀 327評(píng)論 2 1