簡體   English   中英

方案中一棵樹的最大和

[英]Maximum sum of a tree in Scheme

我在嘗試做練習時遇到了麻煩,因為我是該語言的新手,以遞歸的方式思考對我來說有點困難。 我有一棵樹(不是必需的二進制樹),我需要找到給出最大和的路徑。 例如我有樹:圖像中給定的'(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中“翻譯” 此處找到的代碼,但我不知道如何在Scheme中遞歸執行。

遞歸非常簡單,您只需要檢查3種情況:

NUMBER?
NULL?
PAIR?

因此,在方案中,您將像這樣構造它:

(define (tree-sum t)
  (cond ((number? t)
         ...)
        ((null? t)
         ...)
        ((pair? t)
         ...)))

pair? 一種是遞歸情況,其中將car和cdr的總和相加。 希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM