如何在第一次迭代中仅在递归Python函数中打印一次语句?
我需要编写一个函数,将计时器打印为输出(同时打印所有内容)。但是,我需要在开头写上“准备好了吗?”,所以我只希望打印一次 以下是我目前掌握的情况:如何在第一次迭代中仅在递归Python函数中打印一次语句?,python,function,recursion,Python,Function,Recursion,我需要编写一个函数,将计时器打印为输出(同时打印所有内容)。但是,我需要在开头写上“准备好了吗?”,所以我只希望打印一次 以下是我目前掌握的情况: def factorial(i): while i > 0: print(i) return (factorial(i-1)) print('Go!') factorial(5) 我想让函数像这样打印输出: Ready? 5 4 3 2 1 Go! 您可以使用: 可以向函数中添加参数
def factorial(i):
while i > 0:
print(i)
return (factorial(i-1))
print('Go!')
factorial(5)
我想让函数像这样打印输出:
Ready?
5
4
3
2
1
Go!
您可以使用:
可以向函数中添加参数
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)
另外,
while
在逻辑上应该是if
。它之所以有效,是因为您总是从中返回,但它没有多大意义。@HampusLarsson这是一个递归函数,没有任何区别……请重构您的代码。因此您的缩进是错误的,在Python中它很重要,所以您应该修复它。无论如何,为什么这个函数称为阶乘?它只是从一个初始参数开始倒计时。您可以只使用一个标志,并在打印后将其设置为false。
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)