想要在开始时添加一次字符串

时间:2012-10-09 16:09:50

标签: python recursion

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

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)

注意笨拙的函数名称 - 通常是一个好兆头,它不只是做一件事而且应该重构。就像首先建议的包装函数形式一样。