我之前写dfs,都是使用一个全局变量,然后在递归边界去修改这个全局变量,这很好理解。但是有返回值的dfs怎么写呢?
这个问题我一直没有去解决,而是一直用的全局变量的方法,而其实有返回值的写法也很简单。
比如下面的代码。
s表示起点,e表示终点,我们每次只能前进一格或者两格,求我们到达终点有多少种方法。有返回值的也很简单,存储好不同分支的结果,相加直接返回即可。这里还是要记住递归的关键点,边界条件,和只思考本层的递归式。如果再思考下一层如何运行的,很容易被绕进去。
def routenum(s, e):
if s==e:
return 1
elif s>e:
return 0
return routenum(s+1, e)+routenum(s+2,e)