V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
manoon
V2EX  ›  问与答

一个python的递归问题-----这是超薄弱环节,一涉及到大脑就短路了。

  •  
  •   manoon · 2013-06-21 21:16:50 +08:00 · 2993 次点击
    这是一个创建于 4171 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://codepad.org/riZNFhIZ



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    def getMaxpage():
    page=2
    dir_url="http://aa.wordpress.com/2013/06/page/"+str(page)
    page_flag=getPageFlag(dir_url)
    if page_flag==0:
    page="maxpage"+str(page)
    else:###受不了,这里可能也许需要用到递归!!!!
    page=page+1
    dir_url="http://fashioncoolture.com.br/2013/06/page/"+str(page)#这个要更新的
    getPageFlag(dir_url)#这个是根据404来判断是否是最后一页

    print page


    另外一个版本:


    def getMaxpage():
    page=2
    dir_url="http://aa.wordpress.com/2013/06/page/"+str(page)
    page_flag=getPageFlag(dir_url)
    while page_flag:
    page=page+1
    dir_url="http://fashioncoolture.com.br/2013/06/page/"+str(page)#这个要更新的
    getPageFlag(dir_url)#这个是根据404来判断是否是最后一页
    print page
    第 1 条附言  ·  2013-06-21 21:57:25 +08:00
    结贴,谢谢大家。

    其实,我还想问。其实弟归这个问题和lamda一样,我原则上都是理解的。
    但是写的时候,就短路。
    呃,除了多写。还有没有其它可以增进脑子的办法?
    14 条回复    1970-01-01 08:00:00 +08:00
    manoon
        1
    manoon  
    OP
       2013-06-21 21:17:54 +08:00
    我怎么用CODEPAD贴不来代码~~~~
    zorceta
        2
    zorceta  
       2013-06-21 21:19:43 +08:00
    直接用while不好吗
    另外可以用"page/%d" % page让字符串好看点
    wenbinwu
        3
    wenbinwu  
       2013-06-21 21:21:33 +08:00
    你想问什么?没弄懂
    reorx
        4
    reorx  
       2013-06-21 21:35:52 +08:00
    iloahz
        5
    iloahz  
       2013-06-21 21:42:18 +08:00
    def getMaxpage(page = 2):
    ...
    if page_flag == 0:
    return page
    else:
    return getMaxpage(page + 1)

    对于递归,感觉想好状态(参数),想好递归出口就好了。另外同这里觉得while就够了
    manoon
        6
    manoon  
    OP
       2013-06-21 21:46:00 +08:00
    @iloahz 好像,看上去好简单的样子。我试试哈,短路的人,脑子桑不起。
    yuelang85
        7
    yuelang85  
       2013-06-21 21:51:57 +08:00
    yuelang85
        8
    yuelang85  
       2013-06-21 21:52:13 +08:00
    manoon
        9
    manoon  
    OP
       2013-06-21 21:52:54 +08:00
    @reorx 你的代码正是我想要的。。。。。谢谢。

    可是,我怎么就搞不来呢?每次都是这样,关于递归关于其它。看别人的,能看懂。自己就很难写出来。
    manoon
        10
    manoon  
    OP
       2013-06-21 21:55:40 +08:00
    @yuelang85 大家都当成练习题了哈。谢谢。
    reorx
        11
    reorx  
       2013-06-21 22:07:36 +08:00
    @manoon 记得第一次被递归的问题困扰,是写一个复杂无比的字典结构检查器,抱着一大瓶可乐一直盯着屏幕看到凌晨4、5点才豁然贯通。大概还是没熬到吧 XD
    yuelang85
        12
    yuelang85  
       2013-06-21 22:09:53 +08:00
    @manoon 兄台,我一直认为递归是反人类的。

    而且,递归这种东西,平时真是用的很少,根据我的经验,每到认为需要用递归的时候,往往都是一个while搞定。

    确实有那种非递归的情况,这种情况真的很少见很少见。
    Golevka
        13
    Golevka  
       2013-06-22 10:03:55 +08:00
    @yuelang85 或许是因为你没写过解析器/解释器/编译器, 否则你会认为递归非常非常常见.
    yuelang85
        14
    yuelang85  
       2013-06-22 10:41:21 +08:00
    @Golevka 额。。。我用过的几次递归,还真是在解析器一类的地方。。。。

    你说得对,这些地方递归很常见。

    我是说写一般的常见项目中
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4154 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:31 · PVG 13:31 · LAX 21:31 · JFK 00:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.