我正在寻找帮助来编写一个返回前15个立方体列表的函数到目前为止,我得到的是堆栈溢出:
(defun cubes (dec lst) ;takes a number and a list as params
(if (= dec 0) lst ;if dec is 0 return the list
(cons (threes (- dec 1) lst))) ;;else decrement and call it again
)
我用以下代码调用它:
(cubes 15 nil) ;should print first 15 cubes
我今天刚开始学口齿不清谢谢你的帮助!
最佳答案
是的,你的函数有一个小问题::-)
您将递归到threes
而不是cubes
。
您试图用一个参数调用cons
(它需要两个参数)。
您不会在递归中更改lst
的值,因此,由于基本情况返回lst
,您将始终获得传入的初始lst
值。
这里有一个固定版本:
(defun cubes (dec lst)
(if (zerop dec)
lst
(cubes (1- dec) (cons (* dec dec dec) lst))))
关于function - 返回列表的多维数据集函数的CLISP递归功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28166038/