banner
andrewji8

Being towards death

Heed not to the tree-rustling and leaf-lashing rain, Why not stroll along, whistle and sing under its rein. Lighter and better suited than horses are straw sandals and a bamboo staff, Who's afraid? A palm-leaf plaited cape provides enough to misty weather in life sustain. A thorny spring breeze sobers up the spirit, I feel a slight chill, The setting sun over the mountain offers greetings still. Looking back over the bleak passage survived, The return in time Shall not be affected by windswept rain or shine.
telegram
twitter
github

不懂遞迴?沒關係,這篇老闆與秘書的對話讓你秒懂!!!

遞迴是程式學習中一個不可避免的關鍵概念,很多新手在剛開始接觸時,經常一頭霧水。那麼,遞迴究竟是什麼意思?

遞迴是一種在函數中調用自身的方法。通常遞迴會把一個複雜的問題分解成較小的子問題,直到達到一個基準情況(即不再調用自身,直接返回結果)。

遞迴函數通常有兩個主要部分:

1、基準條件:當滿足某個條件時,遞迴停止,函數不再調用自身。

2、遞迴調用:函數在解決問題的過程中調用自己,但問題的規模逐漸縮小。

遞迴的一個經典例子是計算階乘,階乘函數定義為:

image

def factorial(n):    
    if n == 1:  # 基準條件:當 n 為 1 時返回 1 
        return 1   
    else:       
        return n * factorial(- 1)  # 遞迴調用

接下來我們換個生活的例子來理解遞迴:

老闆打電話給秘書:

"準備好週末!我們要出差兩天。"

秘書立刻給老公打電話:

"親愛的,我和老闆要出差,你這兩天得自力更生了哈。"

老公露出狡黠的笑容,撥通了女友的電話:

"寶貝,我老婆出差了,來我家吧,咱倆樂呵樂呵!"
女友眼睛一亮,趕緊通知輔導功課的男孩:

"這週末你自由了,功課取消啦!" 男孩高興的跳了起來,馬上給爸爸打電話:

"爸,這個週末終於能跟你一起了!" 老闆聽到兒子的話,瞬間心軟,拿起電話給秘書

說:
"出差取消了,我要陪我兒子過週末。"

秘書一邊嘆氣,一邊給老公打電話:
"不去了,週末在家。"

老公急得不行,趕緊給女友發消息:
“不好意思啊,老婆不出差了,計畫取消!"

女友無奈地打給男孩:
"抱歉了,功課繼續,趕緊準備學費吧。"

男孩一臉苦相,打給爸爸:
"對不起爸,我還是得上課..."

老闆長嘆一聲,默默拿起手機又給秘書打了個電話:
"唉,準備出差吧..."

用 python 來實現以上的故事:

def phone_story(state):
    characters = [
        "老闆打電話給秘書說:“準備過週末吧,我們要出差了。”",
        "秘書打電話給丈夫說:“我和老闆要出差兩天,你要照顧好自己。”",
        "丈夫打電話給女友說:“我老婆出差了,回家吧,我們可以玩得開心。”",
        "女友給自己輔導功課的男孩打電話:“這個週末不用輔導功課了。”",
        "男孩打電話給父親說:“爸爸,我們終於可以一起度過這個週末了。”",
        "爸爸(老闆)打電話給秘書說:“出差取消了。我要和我兒子一起過週末。”",
        "秘書打電話給丈夫:“我不去了。”",
        "丈夫打電話給女友:“對不起,我的妻子不去了。”",
        "女朋友打電話給男孩:“你要交學費了。”",
        "男孩打電話給他的父親並說:“對不起爸爸,我要上課了。”"
    ]
    
    print(len(characters))
    print(state)
    
    if state == len(characters):
        print("爸爸打電話給他的秘書,故事循環回到起點...\n")
        return
    
    # 逐層推進
    print(characters[state])  # 遞迴調用,模擬每個人逐步傳遞電話
    phone_story(state + 1)  # 回溯時,角色開始改變決定
    print(characters[len(characters) - state - 1])

# 從故事的第一個電話開始
phone_story(0)

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。