关于dfs中有返回值和无返回值两种写法的问题

我之前写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)

原文地址:https://www.cnblogs.com/zuotongbin/p/11170987.html

时间: 2024-10-04 04:15:33

关于dfs中有返回值和无返回值两种写法的问题的相关文章

RhinoMock中有参数方法和无返回值方法的使用

无返回值方法,RhinoMock的例子是这么做的: demo.VoidThreeArgs(0, "", 0f); LastCall.On(demo).Callback<int, string, float>(ThreeArgsAreSame); mocks.Replay(demo); 无参数方法: INameSource nameSource = (INameSource)mocks.StrictMock(typeof(INameSource)); Expect.Call(

动态SQL实现与注意事项(有返回值与无返回值动态SQL 实现)

1.分类 当执行的SQL语句需传入变量时,必须使用SQL 动态语句实现: 动态语句分两种情况: (1)有返回值动态SQL (2)无返回值动态SQL 2.实现 假设存在一个学生表,具有UserID, UserName两列,属性为INT 与VARCHAR(20) 2.1 普通SQL 语句实现 SELECT UserID, UserName FROM StdTable WHERE UserID=123; 2.2 动态SQL 实现 --根据输入的ID查询出相应数据 DECLARE @ID INT DEC

Android:实现无标题的两种方法

实现无标题的两种方法:配置xml文件和编写代码设置 1.在AndroidManifest.xml文件中进行配置 实现全屏效果: android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 实现无标题栏(但有系统自带的任务栏): android:theme="@android:style/Theme.NoTitleBar" 2.编写代码设置 requestWindowFeature(Window.FEATURE

Android——关于Activity跳转的返回(无返回值和有返回值)——无返回值

一.无返回值 跳转页面,并将第一页的Edittext输入的数据通过按钮Button传到第二页用Edittext显示,点击第二页的 返回按钮Button返回第一页(改变第二页的Edittext的内容不能返回至第一页) ——普通方式,没有返回值的方式 1.给第一页面Edittext和Button设置id 2.设置Button的点击监听 (1)获取view实例,通过Edittext的id找到Edittext (2)获取内容并转为文本形式 getText().toString() (3)设置Intent

C# web api返回类型设置为json的两种方法

web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Application_Start()方法中添加一句: 代码如下: GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 修改后: 代码如下: protected void Applicati

C# web api 返回类型设置为json的两种方法

每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心! 悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来.我们都知道计算机技术发展日新月异,速度惊人的快,你我稍不留神,就会被慢慢淘汰!因此:每日不间断的

CSU - 1356 Catch(dfs染色两种写法,和hdu4751比较)

Description A thief is running away! We can consider the city where he locates as an undirected graph in which nodes stand for crosses and edges stand for streets. The crosses are labeled from 0 to N–1. The tricky thief starts his escaping from cross

Android中实现全屏、无标题栏的两种办法

在进行UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置. 1.在xml文件中进行配置 在项目的清单文件AndroidManifest.xml中,找到需要全屏或设置成无标题栏的Activity,在该Activity进行如下配置即可. 实现全屏效果: android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 实现无标题栏(但有系统自带的任务栏): androi

Jvm(31),理解升级----通过JVM内存模型深入理解值传递和引用传递两种方式

值传递和引用传递分析 Java中数据类型分为两大类:基本类型和引用类型(也就是对象类型). 基本类型:boolean.char.byte.short.int.long.float.double 引用类型:类.接口.数组 因此,变量类型也可分为两大类:基本类型和引用类型. 在分析值传递和引用传递之前,建议了解下以上变量类型在Java内存管理模型中的位置,如果对此有所了解,将更加有助于理解两种传递的方式^_^ 在Java内存中,基本类型变量存储在Java栈(VM Stack)中,引用变量存储在堆(H