我如何在递归Python函数中仅在第一次迭代中打印一次语句?

问题描述 投票:-1回答:2

我需要编写一个将计时器输出为输出的函数(所有内容都同时显示)。但是,我需要写“准备好了吗?”一开始,所以我只希望打印一次。

这是我到目前为止的内容:

def factorial(i):
    while i > 0:
        print(i)
        return (factorial(i-1))
    print('Go!')

factorial(5)

我希望函数像这样打印输出:

Ready?    
5
4
3
2
1
Go!
python function recursion
2个回答
1
投票

您可以使用inner function

def factorial(i):
    def recursive_output(i):
        if i > 0:
            print(i)
            recursive_output(i-1)

    print("Ready!")
    recursive_output(i)
    print("Go!")

0
投票

您可以在函数中添加参数

FIRST_TIME = True
NOT_FIRST_TIME = False


def factorial(i, is_first_time):
    if is_first_time:
        print('Ready?')
    if i:
        print(i)
        return (factorial(i-1, NOT_FIRST_TIME))
    print('Go!')


factorial(5, FIRST_TIME)
© www.soinside.com 2019 - 2024. All rights reserved.