[英]Printing part of a string by recursion
I'm trying to make a recursion sequence (Have to do it like this) where I print a * followed by the last character plus the following character on the next line, etc. So if "Hello" was passed, it would print: 我试图做一个递归序列(必须这样做),在其中打印一个*,然后是最后一个字符再加上下一行的下一个字符,等等。因此,如果传递了“ Hello”,它将打印:
*
o
ol
oll
olle
olleH
My question is, how do I get the last character to stay and how do I get the star to print first. 我的问题是,如何获得最后一个保留的字符,以及如何让该星形优先打印。 I have it so everything prints in reverse, but only one character and the star prints last.
我有它,所以一切都反向打印,但只有一个字符,最后是星号。 This is what I have:
这就是我所拥有的:
def reverse(s):
if len(s) == 0:
return ('*')
else:
print(s[-1])
return reverse(s[0:-1])
Thanks! 谢谢!
Try this: 尝试这个:
def reverse(s):
if len(s) == 0:
print(*)
else:
reverse(s[1:])
print(s[::-1])
When the string has no length it will print *
, otherwise it will recursively call with 1 less character and print the string reversed. 当字符串没有长度时,它将打印
*
,否则它将递归调用,并减少1个字符,然后反向打印字符串。
As a traceback of reverse('two')
: 作为
reverse('two')
的追溯:
Call - 'two' Call - 'wo' Call - 'o' Call - '' Print - '*' Return Print - 'o' Return Print - 'ow' Return Print - 'owt' Return
Call as reverse('Hello')
称为
reverse('Hello')
def reverse(s, length, iteration):
if iteration == 0:
return '*' + reverse(s, length, iteration+1)
elif iteration == length:
return s[::-1]
else:
return '%s\n' % s[length - iteration: length][::-1] + reverse(s, length, iteration+1)
input = 'Hello'
print(input, len(input), 0)
def reverse(s):
print('*')
length = len(s)
for i in range(1, length + 1):
yield s[length - i: length][::-1]
print('\n'.join(list(reverse('Hello'))))
this will print: 这将打印:
olleh
olle
oll
ol
o
*
output=[]
def reverse(s):
if (len(s)>0):
print(s[::-1])
output.append(s[::-1])
reverse(s[1:])
else:
print('*')
output.append('*')
reverse('hello')
# if you do need the original order, see below
for e in (output[::-1]):
print(e)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.