我想不出一種方法來搜索列表以確保它具有所有整數。如果有非整數數據,我想立即返回nil
,如果沒有,則繼續我的功能。在列表中搜索整數(Lisp)
我試圖做的遞歸函數將會是cons
,car
與cdr
的列表。隨着我的嘗試,我無法返回nil
。我只能忽略非整數數據。例如,(add-1-all '(1 2 3 a))
將在每個數字加1後返回(2 3 4)
。
(defun add-1-all (L)
(if (null L)
L
(if (integerp (car L))
(cons (+ (car L) 1) (add-1-all (cdr L)))
nil)))
我明白,利弊正在使這種情況發生,因爲遞歸正在添加到列表中。
這是有道理的。有沒有一種方法可以在沒有幫助功能的情況下做到這一點? – user2803198
你可以編寫一個函數,它接受可變數量的參數,如果它有1個參數,就像'add-1-all';如果它有2個'add-1-all-helper',或者你可以寫'如果你只是在擔心污染你的命名空間,那麼在add-1-all裏面的'let'裏面加上'1-all-helper'。 –
@NeilForrester你忘了解答。此外,通過使用具有默認值的可選參數或標籤,您可以不使用幫助器功能。 – uselpa