我正在寻找帮助来编写一个返回前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/

10-10 05:02