我在尝试做某项练习时遇到了麻烦,因为我是这种语言的新手,以递归的方式思考对我来说有点困难。我有一棵树(不是必需的二进制树),我需要找到给出最大和的路径。例如,我有一棵树:图像中给出的‘(1((0)(2((3)(2)))(5)))
1
0 2 5
3 2
所以我必须做一个函数:(函数’(1((0)(2((3)(2)))(5)))),它应该返回6(在这种情况下)。有2条路径可以给出答案:1 + 2 + 3 = 6和1 + 5 =6。我试图在python found here中“翻译”代码,但是我不知道如何在方案。
答案 0 :(得分:0)
递归非常简单,您只需要检查3种情况:
NUMBER?
NULL?
PAIR?
因此,在方案中,您将像这样构造它:
(define (tree-sum t)
(cond ((number? t)
...)
((null? t)
...)
((pair? t)
...)))
pair?
是一种递归情况,其中您将car和cdr之和相加。希望有帮助!