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)

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。