【问题标题】:How to print the statement only once which is inside recursion call? Python如何只打印一次在递归调用中的语句? Python
【发布时间】:2021-01-26 23:00:59
【问题描述】:
def recur(y):
    if y>0:
        print(y)
        recur(y-1)
        print("all the recursive calls are done, now printing the stack")   # I want this statement printed only once
        print(y)
recur(5)

我希望打印语句只打印一次。我不想使用 if y>4 print() 这有损于目的。

我希望输出是这样的:

5
4
3
2
1
all the recursive calls are done, now printing the stack
1 
2
3
4
5

【问题讨论】:

    标签: python loops recursion printing stack


    【解决方案1】:

    将消息放在else: 块中,以便仅在我们不递归时打印。

    def recur(y):
        if y>0:
            print(y)
            recur(y-1)
            print(y)
        else:
            print("all the recursive calls are done, now printing the stack")
    
    recur(5)
    

    【讨论】:

    • 这正是我想要的。但我不明白 if 如何打印 else 语句,然后返回 if 打印其余语句。
    • 它在下一次递归发生时打印它。在它返回后,它会继续之前的调用,就像所有其他调用一样。
    • 在纸上手工执行代码,你会得到启发。
    • 好的。谢谢你的提示
    【解决方案2】:

    当您达到停止条件时,打印所需的文本:

    def recur(y):
        if y>0:
            print(y)
            recur(y-1)      
            print(y)
        else:
            print("all the recursive calls are done, now printing the stack")
    

    【讨论】:

      【解决方案3】:
      def recur(y):
          if y > 0:
              print(y)
              recur(y - 1)
              if y == 1:
                  print("all the recursive calls are done, now printing the stack")   # I want this statement printed only once
              print(y)
      
      
      recur(5)
      
      

      打印

      5
      4
      3
      2
      1
      all the recursive calls are done, now printing the stack
      1
      2
      3
      4
      5
      

      因为它只在递归结束时打印,其中 y == 1。如果您在 1 不是结束的情况下进行递归,则创建类似效果所需要做的就是找到最终递归的位置和然后放入一个 print 语句,只有在你处于最终递归时才会激活。

      【讨论】:

      • 很抱歉,这不是办法。
      • @NithinGowda 为什么?它不适合你吗?它对我有用。
      • 我确实工作,看看barmar的回答。你会知道我在找什么
      • @NithinGowda 代码只是在说“如果它处于最后的递归,打印'所有递归调用都已完成,现在打印堆栈'”。这对我来说似乎很有意义。我觉得仅仅因为它与其他人的答案有点不同而忽略我的答案是不公平的,但它工作得很好并且从不同的角度提供了一个解决方案。
      猜你喜欢
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多