在Python中的If-condition中使用递归调用

时间:2016-08-21 21:12:15

标签: python recursion

我编写了一个使用坐标下降来执行套索回归的函数。

代码如下:

def lasso_cyclical_coordinate_descent(feature_matrix, output, weights, l1_penalty, tolerance):
    for i in range(len(weights)):
        old_weights_i = weights[i]
        weights[i] = lasso_coordinate_descent_step(i, feature_matrix, output, weights, l1_penalty)
        diff = []
        diff.append(abs(old_weights_i - weights[i]))
    if max(diff) > tolerance:
        weights = lasso_cyclical_coordinate_descent(feature_matrix, output, weights, l1_penalty, tolerance)
    return weights            

我的想法是,在If条件中运行递归调用将导致仅在条件不满足时返回权重,即当我得到所需结果时。在此之前,该函数将继续递归调用自身。

我的逻辑是否正确?我和别人讨论过这件事,他说这不是,但没有进一步解释。

1 个答案:

答案 0 :(得分:0)

你是对的。你的if语句和你的隐含意思是你的递归"停止条件"。一旦if条件为false,它将退出函数并通过退出所有父调用结束递归。

您必须确保此语句至少为false一次,以避免最大深度递归异常。