gpt4 book ai didi

function - Lisp 中的递归并制作我自己的长度函数

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:03 25 4
gpt4 key购买 nike

我正在尝试在 lisp 中创建我自己的 length/2 函数(它允许您找到列表的长度)并且遇到了问题。

如果我要用 java 编写这个程序,我会创建一个全局索引变量

that = 0

然后在方法中我会做

if(list.equal(null))
{
return index;
}
else
{
index++;
return functioname(tail of list) ;
}.

显然这不是真正的 java 语法,但我只是想传达我想在 lisp 中应用的逻辑。

我的主要问题是 lisp 中的 ifs 只允许你做

if test expression
then do something
else
do something else

当我想做的时候

if test expression
then do something
else
do 2x something

有没有一种方法可以在 lisp 中完成此操作,或者是否有更好的方法来解决这个问题?

最佳答案

递归执行:

len(list):
if list is null
return 0
else
remove first_item from list
return 1 + len(list)


(define (length items)
(if (null? items)
0
(+ 1
(length (cdr items)))))


(length (list 1 2 3))

3

或者使用set!:

(define count 0)

(define (length items)
(when (not (null? items))
(set! count (+ count 1))
(length (cdr items))))

(length (list 1 2 3 4 5))

count

5

关于function - Lisp 中的递归并制作我自己的长度函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37369965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com