python如何在多次递归找到答案后停止接下去的递归
PHP中文网
PHP中文网 2017-04-17 15:35:28
0
5
909
def foo(a):
    if 得到了结果:
        结束递归
        显示
    if 错误:
        return
    else:
        for each in *****:
            foo(each)

这是我大概的思路,试过用exit()虽然停了但会报错

PHP中文网
PHP中文网

认证0级讲师

répondre à tous(5)
Ty80

显示后return 一个特殊值 然后检查foo的返回变量 如果是那个特殊值直接基于return 那个值

大家讲道理

太模糊的问题,上代码才有得分析。

PHPzhong

递归需要出口条件,也就是你说的停止。。

一般情况在递归内部需要一个分支判断,如:

def fab(n):
  if n<2:
    return 1
  else
    return fab(n-1)+fab(n-2)

递归一定次数以后达到上面的if条件,递归就结束了。

Peter_Zhu

显示后加个return就行

PHPzhong
需要有退出条件, 比如检查一段数据中是否有unicode字符
def check_unicode(data):
    """
    :param data:
    :return:
    """
    if isinstance(data, dict):
        for k, v in data.iteritems():
            if isinstance(v, dict):
                if check_unicode(v):
                    return True
            elif isinstance(v, list):
                if check_unicode(v):    # 检查为True退出
                    return True
            else:
                if v and isinstance(v, unicode):
                    return True
    elif isinstance(data, list):
        for v in data:
            if isinstance(v, dict):
                if check_unicode(v):
                    return True
            elif isinstance(v, list):
                if check_unicode(v):
                    return True
            else:
                if v and isinstance(v, unicode):
                    return True
    else:
        if data and isinstance(data, unicode):
            return True
    return False
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal