def countup(k, n):
'counts up from k to n'
if k == n:
print(k)
elif n <= 0:
print("Let's go!")
else:
print(k)
countup(k+1,n)
我想在递归开始之前添加一个“Let's Go”的打印语句,所以它看起来像这样:
计数进位(3,6)
我们走吧!
3
4
5
6
答案 0 :(得分:1)
您可以编写像这样的包装函数
def countup(k,n):
print "Let's Go"
_countup(k,n)
def _countup(k, n):
'counts up from k to n'
if k == n:
print(k)
else:
print(k)
_countup(k+1,n)
答案 1 :(得分:0)
将递归移动到第二个函数中,让第一个函数输出字符串,然后调用第二个函数。
答案 2 :(得分:0)
在第一次调用该方法的行之前打印?当然你不能直接跳进递归..对吧?
答案 3 :(得分:0)
使用默认参数:
def countup(k, n,go=None):
'counts up from k to n'
if go:
print go
if k == n:
print(k)
elif n <= 0:
print("Let's go!")
else:
print(k)
countup(k+1,n)
countup(3,6,"Lets go")
<强>输出:强>
Lets go
3
4
5
6
答案 4 :(得分:0)
对于像这样的愚蠢的东西,我使用关键字参数:
def count_up_or_down(k, n, start=True):
'counts up from k to n'
if(start):
print("Let's go!")
if k == n:
print(k)
else:
print(k)
sign = 1 if n>k else -1
count_up_or_down(k+sign,n,start=False)
count_up_or_down(3,6)
但实际上,功能通常应该做一件事(并做好一件事)。你要求的功能是做两件不相关的事情(打印“Lets go!”并计数)。将这两个不相关的动作分解为两个独立的函数/语句肯定会更好。
答案 5 :(得分:0)
您可以通过调用函数执行此操作,或者让countup
成为另一个打印“让我们走!”的函数。在调用递归之前。
如果你想从递归中做到这一点,请尝试将其切换,以便从顶部开始并递减(未经测试,但它在我脑海中起作用):
def countupwithletsgo(k, n):
if k == n:
print("Let's go!")
print(n)
else:
countupwithletsgo(k, n-1)
print(n)
注意笨拙的函数名称 - 通常是一个好兆头,它不只是做一件事而且应该重构。就像首先建议的包装函数形式一样。