写一个返回布尔值的递归函数搜索(l,key):如果key在列表l中,则返回True;如果不是,则为假。描述基本情况以及较小问题与较大问题的关系。您不能使用in运算符或index()列表方法。
任何人都可以解释一下我需要做什么来描述吗?我不知道有什么关于recurrsion知道从哪里开始。它用于考试复习实验室作业。
这是我提供的代码。
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.
"""
Sample Main:
l1 = [1, '2', 'x', 5, -2]
print search(l1, 'x') # should output: "True"
print search(l1, 2) # should output: "False"
答案 0 :(得分:0)
所有递归往往遵循相同的规则:
因此,例如,添加两个正数a
和b
的(非常低效)方式:
b
为零,则返回a。a+1
和b-1
。类似的东西:
def addtwo (a, b):
if b == 0:
return a
return addtwo (a+1, b-1)
现在让我们考虑你的任务案例:
在伪代码中(非常类似于Python,但又不同,你必须做一些工作):
def search (list, key):
if list is empty:
return false
if key == first item in list:
return true
return search (list with first element removed, key)
答案 1 :(得分:0)
关于递归的每一个问题都应该以同样的方式处理(通常)......问问自己什么是base case
,然后在更高的情况下建立...
所以在这个问题中,问问自己,我什么时候可以确定key
中没有list
...
很明显,当列表为空时,您确定它不存在。
对于更大的列表,您比较第一个元素,如果它与key
相同,则立即返回True
,但是如果它不是,则执行{{{{}的所有检查1}} ...
所以研究所有这些方面, 这是你的算法。
rest of the list