重复一次字符串n次并打印n行

时间:2016-10-12 21:01:42

标签: python recursion

我已经被困在一个问题上一段时间了:

我正在寻找创建一个消耗字符串和正整数的python函数。对于n行,该函数将打印字符串n次。我不能使用循环,我只能使用递归

e.g。

repeat("hello", 3)

hellohellohello
hellohellohello
hellohellohello

每当我尝试创建一个执行此操作的函数时,该函数会逐渐减少字符串的长度:

e.g。

repeat("hello", 3)

hellohellohello
hellohello
hello

这是我的代码:

def repeat(a, n):
if n == 0:
    print(a*n)
else:
    print(a*n)
    repeat(a, n-1)

任何帮助将不胜感激,谢谢!

5 个答案:

答案 0 :(得分:6)

一个班轮

def repeat(a,n):
    print((((a*n)+'\n')*n)[:-1])

让我们把它分开

  1. a*n重复字符串n次,这就是你想要的一行
  2. +'\n'在字符串中添加一个新行,以便您可以转到下一行
  3. *n因为您需要重复n
  4. [:-1]将删除最后\n,因为print默认设置换行符。

答案 1 :(得分:4)

试试这个

def f(string, n, c=0):
    if c < n:
        print(string * n)
        f(string, n, c=c + 1)

f('abc', 3)

答案 2 :(得分:1)

你真的很亲密。

def repeat(a, n):
    def rep(a, c):
        if c > 0:
            print(a)
            rep(a, c - 1)
    return rep(a * n, n)
print(repeat('ala', 2))
alaala
alaala

带闭合的函数可以完成这项任务。

答案 3 :(得分:1)

所以你只需要额外的参数来告诉你已经运行了多少次该函数,它应该有默认值,因为在第一位函数必须带两个参数(str和正数)。 / p>

def repeat(a, n, already_ran=0):
    if n == 0:
        print(a*(n+already_ran))
    else:
        print(a*(n+already_ran))
        repeat(a, n-1, already_ran+1)
repeat('help', 3)

输出

helphelphelp
helphelphelp
helphelphelp
helphelphelp

答案 4 :(得分:1)

您应该(可选)传递第3个参数来处理剩余行数的递减:

def repeat(string, times, lines_left=None):
    print(string * times)

    if(lines_left is None):
        lines_left = times
    lines_left = lines_left - 1

    if(lines_left > 0):
        repeat(string, times, lines_left)