Python 回忆录与字符串

Python 回忆录与字符串,python,string,dictionary,recursion,memoization,Python,String,Dictionary,Recursion,Memoization,我有两个字符串X1和X2 还有一个lambda_u参数,我想用下面的代码,通过递归两个字符串的大小来计算一个函数: def Bk_function(X1,X2,lambda_,k): #lambda=0.01 #k=5 if k==0: return 1 if min(len(X1),len(X2))<k: return 0 else: return (lambda_*Bk_function(X1[:-

我有两个字符串
X1
X2
还有一个
lambda_u
参数,我想用下面的代码,通过递归两个字符串的大小来计算一个函数:

def Bk_function(X1,X2,lambda_,k):
    #lambda=0.01
    #k=5
    if k==0:
        return 1
    if min(len(X1),len(X2))<k:
        return 0
    else:
        return (lambda_*Bk_function(X1[:-1],X2,lambda_,k) + lambda_*Bk_function(X1,X2[:-1],lambda_,k)
                + lambda_**2*(-Bk_function(X1[:-1],X2[:-1],lambda_,k) + (X1==X2)*Bk_function(X1[:-1],X2[:-1],lambda_,k-1)))
def Bk_function(X1,X2,lambda_,k):
    if not (bool(memo.get(k))):
        if k==0:
            memo[k] = 1
        if min(len(X1),len(X2))<k:
            memo[k] = 0
        else:
            memo[k] = (lambda_*Bk_function(X1[:-1],X2,lambda_,k) + lambda_*Bk_function(X1,X2[:-1],lambda_,k)
                    + lambda_**2*(-Bk_function(X1[:-1],X2[:-1],lambda_,k) + (X1==X2)*Bk_function(X1[:-1],X2[:-1],lambda_,k-1)))
    return memo[k]
def Bk_函数(X1,X2,λ,k):
#λ=0.01
#k=5
如果k==0:
返回1

如果min(len(X1),len(X2))您可以定义问题中提到的函数

def Bk_function(X1,X2,lambda_,k, memo={})
但调用函数时不需要将其作为参数传递,因为将使用函数定义中的同一字典。为了演示,请尝试运行下面的示例代码

def test(k, v, data={}):
    data[k] = v
    print(data)
    return v


test('first', 1)
test('second', 2)
test('third', 1)