gpt4 book ai didi

common-lisp - lisp 基本递归函数。帮我追踪一下

转载 作者:行者123 更新时间:2023-12-03 07:44:44 26 4
gpt4 key购买 nike

Lisp sigma 函数递归 - 帮我追踪它。我从逻辑上理解了它,我只需要理解这个例子,这样我就可以完成我的作业。我不确定第 4 行和第 5 行发生了什么,x 设置为什么。如果我的输入是 (sigma f 1 2),我的输出是 20,另一个例子是 (sigma f 1 5)。如果你能帮我追踪一下。我将在下面发布 sigma 定义。感谢您的帮助。

(defun sigma (f m n)
(if (> m n)
0
(let ((x (sigma f (+ m 1) n)))
(+ (funcall f m)
x))))

最佳答案

您还可以跟踪您的函数。由于您需要一个辅助函数,因此我们定义 myfun,它将其参数乘以 2。

CL-USER> (defun myfun (x) (* x 2))
MYFUN

TRACE两个功能:

CL-USER> (trace sigma myfun)

然后,你应该有这样的东西:

CL-USER> (sigma 'myfun 0 5)
0: (SIGMA MYFUN 0 5)
1: (SIGMA MYFUN 1 5)
2: (SIGMA MYFUN 2 5)
3: (SIGMA MYFUN 3 5)
4: (SIGMA MYFUN 4 5)
5: (SIGMA MYFUN 5 5)
6: (SIGMA MYFUN 6 5)
6: SIGMA returned 0
6: (MYFUN 5)
6: MYFUN returned 10
5: SIGMA returned 10
5: (MYFUN 4)
5: MYFUN returned 8
4: SIGMA returned 18
4: (MYFUN 3)
4: MYFUN returned 6
3: SIGMA returned 24
3: (MYFUN 2)
3: MYFUN returned 4
2: SIGMA returned 28
2: (MYFUN 1)
2: MYFUN returned 2
1: SIGMA returned 30
1: (MYFUN 0)
1: MYFUN returned 0
0: SIGMA returned 30
30

关于common-lisp - lisp 基本递归函数。帮我追踪一下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53027142/

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