Python 递归搜索布尔返回函数
编写一个递归函数搜索(l,key),返回一个布尔值:如果key在列表l中,则为True;如果不是,则为False。描述基本情况以及小问题与大问题的关系。不能使用in运算符或index()列表方法 有人能解释一下我需要在这里做什么来描述吗?我对复发一无所知,不知道从哪里开始。这是考试复习实验作业 这是我得到的代码Python 递归搜索布尔返回函数,python,Python,编写一个递归函数搜索(l,key),返回一个布尔值:如果key在列表l中,则为True;如果不是,则为False。描述基本情况以及小问题与大问题的关系。不能使用in运算符或index()列表方法 有人能解释一下我需要在这里做什么来描述吗?我对复发一无所知,不知道从哪里开始。这是考试复习实验作业 这是我得到的代码 def search(l,key): """ locates key in list l. if present, returns True; else returns
def search(l,key):
"""
locates key in list l. if present, returns True; else returns False.
PRE: l is a list.
POST: l is unchanged; returns True if key in l; False otherwise.
"""
主样本:
l1 = [1, '2', 'x', 5, -2]
print search(l1, 'x') # should output: "True"
print search(l1, 2) # should output: "False"
所有递归都遵循相同的规则:
- 有一个或多个终止案例
- 其他每一个案例都是当前案例的一个稍微简单的形式
a
和b
:
- 如果
为零,则返回ab
- 否则,添加两个数字
和a+1
b-1
def addtwo (a, b):
if b == 0:
return a
return addtwo (a+1, b-1)
现在让我们考虑一下你的任务案例:
- 如果列表为空,则未找到它:return false
- 如果列表的第一个元素等于您的键,您会发现它:return true
- 否则,通过删除第一个元素查看列表
关于递归的每一个问题都应该以同样的方式处理(通常)…问问自己什么是
基本情况
,然后在更高的情况下建立这个基础
因此,在这个问题中,问问自己,我什么时候可以确定列表中没有键
。。。
很明显,当列表为空时,您肯定它不存在
对于较大的列表,比较第一个元素,如果它与键相同,则立即返回True
,如果不是,则对列表的其余部分执行所有检查
所以研究这些方面,,
这是你的算法
function locate(lst,key)
if lst == emptylist then return False
if lst[0] == key then return True
else return locate(lst[1..],key) //i use the notation lst[1...] to indicate list starting from 1 index.
帮我一个忙,对你的教授大喊大叫,因为他在示例代码中使用小写字母“l”作为标识符。然后读《小阴谋家》:)哈哈,我知道它让人困惑。哈哈,不管怎样,我还是遇到了一个错误:(出于某种原因,它返回了一个错误,其中最后一行接受整数而不是浮点数。(@justin,可以共享您的代码,(编辑您的原始问题),我们将尝试更正它:)我有一个非常新的问题。如果在递归堆栈中有些返回True,有些返回False,那么返回将如何工作?
function locate(lst,key)
if lst == emptylist then return False
if lst[0] == key then return True
else return locate(lst[1..],key) //i use the notation lst[1...] to indicate list starting from 1 index.