我想在图形中找到指向某个串通级别(从 A 到 B 的链接路径长度)的相互链接。如何计算每个递归调用并在计数达到参数 k 后终止赋值?
输入:
• 图形: g = {a : [a, b, c], b : [a], c : [d], d : [a]}
• 页面:图中的元素[节点]
• 节点:图形中的键
• k:串通级别(即链路路径的长度.max)
def is_reciprocal(graph, page, node, k):
if page in graph[node]:
return True
else:
is_reciprocal(graph, node, page, k)
有一种方法,你可以跟踪没有。
计数请参阅下面的代码,你会得到想法
def callme(n):
if n[0] == 5:
print 'recursion exceeds 5'
return True
n[0] = n[0] + 1
print 'recursion number %d'%(n[0])
callme(n)
n = [0]
callme(n)
希望你明白了!
下面的模板可以扩展为使用其他参数(没有参数的递归函数是不寻常的)。这只是展示了如何使用默认参数值来避免必须指定初始递归级别(这里我从 1 开始,因为我们正在计算级别)。
def callme(n=1):
print 'recursion number %d'%(n)
if n > 5:
print 'recursion exceeds 5'
return True
else:
return callme(n+1)
callme()