我已经被困在一个问题上一段时间了:
我正在寻找创建一个消耗字符串和正整数的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)
任何帮助将不胜感激,谢谢!
答案 0 :(得分:6)
一个班轮
def repeat(a,n):
print((((a*n)+'\n')*n)[:-1])
让我们把它分开
a*n
重复字符串n
次,这就是你想要的一行+'\n'
在字符串中添加一个新行,以便您可以转到下一行*n
因为您需要重复n
次[:-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)