def mystery_code(n):
return mystery_recursive(n, n-1)
def mystery_recursive(a, b):
if b<=0:
return 0
else:
c=mystery_recursive(a,b-1)
if a%b==0:
c+=b
return c
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解这段代码的作用吗?
它计算了适当除数的总和n.
如果您通过代码你会看到它调用,例如,mystery_recursive(5, 4)然后递归mystery_recursive(5, 3),mystery_recursive(5, 2),mystery_recursive(5, 1),mystery_recursive(5, 0).它会返回0因为b <= 0.
在每个这些调用中,它将调用的结果分配给cif a % b == 0(即a可以除以b),然后将其添加b到c.所以你最终会得到一个正确的除数n.