DragonYu 发表于 2022-9-28 17:37:28

递归实现

请大神帮忙看看 谢谢啦

人造人 发表于 2022-9-28 17:51:09

看什么?

jackz007 发表于 2022-9-28 17:58:41

本帖最后由 jackz007 于 2022-9-28 18:53 编辑

def foo(n):
    if not n:
      print('取出钻戒')
    else:
      print('打开第' , n , '层盒子')
      foo(n - 1)
      print('盖上第' , n , '层盒子')      
   
n = int(input('输入包装层数:'))
foo(n)
print('还原包装')
      运行实况:
D:\\Python>python x.py
输入包装层数:8
打开第 8 层盒子
打开第 7 层盒子
打开第 6 层盒子
打开第 5 层盒子
打开第 4 层盒子
打开第 3 层盒子
打开第 2 层盒子
打开第 1 层盒子
取出钻戒
盖上第 1 层盒子
盖上第 2 层盒子
盖上第 3 层盒子
盖上第 4 层盒子
盖上第 5 层盒子
盖上第 6 层盒子
盖上第 7 层盒子
盖上第 8 层盒子
还原包装

D:\\Python>

zhangjinxuan 发表于 2022-9-28 18:38:30

本帖最后由 zhangjinxuan 于 2022-9-28 19:38 编辑

代码注释详细讲解,写这个不容易,求设最佳{:10_254:}

def open_boxs(n):
    if n == 0: #判断边界条件,如果n等于0,那么就可以取出钻戒了
      print("取出钻戒")
      return #必须返回,否则会死递归
    print("打开第", n, "层盒子") #先打开第n层盒子
    open_boxs(n - 1) #再打开第n - 1层盒子

def close_boxs(n):
    #注:在这里,是先递归,在盖上,因为要盖上第n层盒子需要盖上n - 1层盒子
    if n == 0: #判断边界条件,如果要盖上第0层盒子,说明盒子就盖完了,返回
      return
    close_boxs(n - 1) #盖上第n - 1层盒子
    print("盖上第", n, "层盒子") #输出

def main():
    n = int(input("输入包装的层数: ")) #先输入
    open_boxs(n) #再打开
    close_boxs(n) #接着盖上
    print("还原包装") #然后还原
    return 0 #最后返回

main()
页: [1]
查看完整版本: 递归实现