列表数据结构中的递归过程
这是一个返回列表 1 中最后一项的过程:
proc last (1)
if (isEmpty(1))
error('Oops. Empty list in procedure last.')
elseif (is empty(rest1))
return (first(1)
else return last(rest(1))
修改它以创建一个返回列表 1 中的项目 i
的递归过程 getItem(i,l)
,其中 i
是大于零的整数。
proc getItem(i,1)
if (isEmpty(1))
error('Opps. Empty list in procedure last.')
else if (isEmpty(getItem,i1)
else if i > 0
return item(i,1)
这是正确的吗?
This is a procedure to return the last item in a list 1:
proc last (1)
if (isEmpty(1))
error('Oops. Empty list in procedure last.')
elseif (is empty(rest1))
return (first(1)
else return last(rest(1))
Modify that to create a recursive procedure getItem(i,l)
that returns item i
in a list 1, where i
is an integer greater than zero.
proc getItem(i,1)
if (isEmpty(1))
error('Opps. Empty list in procedure last.')
else if (isEmpty(getItem,i1)
else if i > 0
return item(i,1)
is that correct?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为了让它递归地工作,最后一行需要与函数具有相同的名称。
除此之外,你需要减少 i ....否则你不会移动...
应该是这样的:
For it to work recursively, that last line needs to have the same name of the function.
Besides that, you need to decrease i .... otherwise you aren't moving...
should be something like:
您使用什么语言?在大多数语言中,您不能使用数字作为变量名。另外,您缺少几个括号,并且没有一致地使用“else if”。
What language are you using? In most languages you cannot use numbers as variable names. Also, you're missing a couple of parenthesis and you're not using 'else if' consistently.