Function CLISP返回列表的多维数据集递归幂函数
我正在寻找帮助,以编写一个函数,返回前15个立方体的列表。以下是我到目前为止得到的,我得到了一个堆栈溢出:Function CLISP返回列表的多维数据集递归幂函数,function,recursion,lisp,common-lisp,exponent,Function,Recursion,Lisp,Common Lisp,Exponent,我正在寻找帮助,以编写一个函数,返回前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 ) 我用以下代码调用它:
(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
我今天刚开始用LISP。谢谢你的帮助 是的,您的函数有一个小问题::-)
三个
而不是多维数据集
cons
(需要两个参数)lst
的值,因此,由于基本情况返回lst
,因此始终会得到传入的初始lst
值(defun cubes (dec lst)
(if (zerop dec)
lst
(cubes (1- dec) (cons (* dec dec dec) lst))))
是的,您的函数有一个小问题::-)
三个
而不是多维数据集
cons
(需要两个参数)lst
的值,因此,由于基本情况返回lst
,因此始终会得到传入的初始lst
值(defun cubes (dec lst)
(if (zerop dec)
lst
(cubes (1- dec) (cons (* dec dec dec) lst))))
是的,您的函数有一个小问题::-)
三个
而不是多维数据集
cons
(需要两个参数)lst
的值,因此,由于基本情况返回lst
,因此始终会得到传入的初始lst
值(defun cubes (dec lst)
(if (zerop dec)
lst
(cubes (1- dec) (cons (* dec dec dec) lst))))
是的,您的函数有一个小问题::-)
三个
而不是多维数据集
cons
(需要两个参数)lst
的值,因此,由于基本情况返回lst
,因此始终会得到传入的初始lst
值(defun cubes (dec lst)
(if (zerop dec)
lst
(cubes (1- dec) (cons (* dec dec dec) lst))))
您还可以使用循环功能,并且您应该检查dec的初始值是否为正值,否则您可能会以无限循环/递归结束:
(defun cubes (dec lst)
(append
(when (plusp dec)
(loop for i from 1 to dec collect (expt i 3)))
lst))
您还可以使用循环功能,并且您应该检查dec的初始值是否为正值,否则您可能会以无限循环/递归结束:
(defun cubes (dec lst)
(append
(when (plusp dec)
(loop for i from 1 to dec collect (expt i 3)))
lst))
您还可以使用循环功能,并且您应该检查dec的初始值是否为正值,否则您可能会以无限循环/递归结束:
(defun cubes (dec lst)
(append
(when (plusp dec)
(loop for i from 1 to dec collect (expt i 3)))
lst))
您还可以使用循环功能,并且您应该检查dec的初始值是否为正值,否则您可能会以无限循环/递归结束:
(defun cubes (dec lst)
(append
(when (plusp dec)
(loop for i from 1 to dec collect (expt i 3)))
lst))
你不想在某处计算立方体吗?你不想在某处计算立方体吗?你不想在某处计算立方体吗?你不想在某处计算立方体吗?你不想在某处计算立方体吗?@Svante Oops。太专注于让代码工作,而忽略了查看问题域。@DomnWerner
(*dec)
与中缀中的dec*dec*dec
相同。它的计算结果基本上是dec
的立方体。你不想在某处计算立方体吗?@Svante Oops。太专注于让代码工作,而忽略了查看问题域。@DomnWerner(*dec)
与中缀中的dec*dec*dec
相同。它的计算结果基本上是dec
的立方体。你不想在某处计算立方体吗?@Svante Oops。太专注于让代码工作,而忽略了查看问题域。@DomnWerner(*dec)
与中缀中的dec*dec*dec
相同。它的计算结果基本上是dec
的立方体。你不想在某处计算立方体吗?@Svante Oops。太专注于让代码工作,而忽略了查看问题域。@DomnWerner(*dec)
与中缀中的dec*dec*dec
相同。它基本上计算为dec
的多维数据集。你不需要lst
,append
,when
。我的意思是:(defun多维数据集(n)(when(plusp n)(循环:for I:from 1:to n:collect(expt I 3))
。没错,但是作者的函数使用了一个整数和一个列表,所以建议的变量也应该使用。(defun多维数据集(n列表)(declare(ignore列表))(when(plusp n)(循环:for i:from 1:to n:collect(expt i 3)))
作者的变体将多维数据集添加到作为第二个参数给出的列表中,而您的变量只是忽略了它。当我编写变体时,我考虑了原始变体的实际操作。您不需要lst
,附加,当
时。我的意思是:(defun cubes(n)(When)(plusp n)(循环:for i:from 1:to n:collect(expt i 3))
。没错,但是作者的函数采用了一个整数和一个列表,所以建议的变量也应该如此。(defun cubes(n list)(declare(ignore list))(when(plusp n)(循环:for i:from 1:to n:collect(expt i 3)))
作者的变体将多维数据集添加到作为第二个参数给出的列表中,而您的变量只是忽略了它。当我编写变体时,我考虑了原始变体的实际操作。您不需要lst
,附加,当
时。我的意思是:(defun cubes(n)(When)(plusp n)(循环:for i:from 1:to n:collect(expt i 3))
。没错,但是作者的函数采用了一个整数和一个列表,所以建议的变量也应该如此。(defun cubes(n list)(declare(ignore list))(when(plusp n)(循环:for i:from 1:to n:collect(expt i 3)))
作者的变体将多维数据集添加到作为第二个参数给出的列表中,而您的变量只是忽略它。当我编写变体时,我考虑了原始变体的实际功能。您不需要lst
,追加