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)