如何编写一个递归函数,将字符串中的每个字符乘以2?

时间:2017-12-07 22:04:01

标签: python function recursion

我试图完成给定数字的递归函数,返回一个字符串,其中返回的值具有每个数字的副本

示例:如果是507,则返回550077

如果数字仅为0,那么只返回0

如果是负数,也只返回一次负号

示例:-507返回-550077

我还没有实现任何能够识别负数的东西,我只是想让我的功能首先工作

到目前为止,我有:

def double(x):
    if x == 0:
        return x
    else:
        x = str(x)
        return x[0]*2 + double(x[1: ])

print(double(527))

但是这会返回IndexError:字符串索引超出范围 我通过打印结果而不是返回结果来工作,但我试图解决的问题严格要求返回结果,而不是打印。我究竟做错了什么?

2 个答案:

答案 0 :(得分:1)

这是递归的,修复了x == 0终止错误,在加倍之前检查一个字符是否为数字,并将最终答案作为int(而不是str)返回。

def double(x):
    x = str(x)
    if len(x) == 0:
        return ''
    else:
        first_char = x[0]

        # only double if it's an integer
        if first_char in map(str, range(10)):
            first_char *= 2
        return int(first_char + str(double(x[1: ])))

print(double(-527))

>>> -552277

答案 1 :(得分:0)

这样的事可能有用。

def double(x):
    if x == 0:
        return x
    else:
        x = str(x)
        l=[]
        for a in x:
            if a == '-':
                l.append(a)
            else:
                l.append(a*2)
        return ''.join(l)
相关问题