在迭代的帮助下理解递归

时间:2015-10-23 16:08:24

标签: python recursion iteration

$date_japan = date('Y年m月d日', date("w"));

基本上我已经编写了这个代码,用于将替代字符串与字符串分开并单独显示它们,

我一直试图通过递归转换或理解这一点,但我最近一直在失败。

这是我的尝试,有人可以告诉我应该如何处理它?<​​/ p>

  def unZip(master3):    
       c = len(master3)
       sub1=''
       sub2=''
       for i in range(0,c,2):
           sub1+=master3[i]
           sub2+=master3[i+1]
       print(sub1,",",sub2)

1 个答案:

答案 0 :(得分:0)

而不是使用切片来确定你的字符串,你应该一次从字符串中取出一个字符然后再回忆你的递归函数

def unzip(s, a, b='', c=''):
    if len(a) == 0:
        return b + ', ' + c
    if s%2 == 0:
        b += a[0]
    else:
        c += a[0]
    return unzip(s+1, a[1:], b, c)

print unzip(0, 'HelloWorld')

Hlool, elWrd

它的作用是从字符串a开始,并在添加到bc与变量s之间交替,具体取决于它是偶数还是奇数。将a的第一个字母添加到bc,然后从a中删除该字母。然后使用s+1再次调用该函数。如果a的长度为零,则返回bc,然后打印结果

要获得与您所拥有的相同的结果,您可以将您简化为

a = 'HelloWorld'
storage1=a[0::2]
storage2=a[1::2]

print(storage1,storage2)

('Hlool', 'elWrd')

切片负责获取a中的所有其他字母,然后您就可以打印出来了。你现在设置它的方式就是继续传递a并变成一个无限循环,因为a的大小永远不会改变。