2011-02-03 63 views
0

這是在列表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)) 

修改,要創建一個遞歸過程getItem(i,l)在列表1,其中i是返回項目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) 

是否正確?

+0

運行它,看到了什麼? – 2011-02-03 21:17:26

回答

0

你在用什麼語言?在大多數語言中,您不能將數字用作變量名稱。另外,你錯過了一些括號,並且你不會一直使用'else if'。

1

爲了遞歸工作,最後一行需要具有相同的函數名稱。

除此之外,你需要減少我....否則你不動......

應該是這樣的:

proc getItem(i,1) 
if (isEmpty(1)) 
     error('Opps. Empty list in procedure last.') 
else if (i > 0) 
    return getItem(i-1,1) 
else return first(1) 
+0

非常感謝Yochai! – 2011-02-03 21:50:05