阿摩線上測驗 登入

申論題資訊

試卷:108年 - 108 公務升官等考試_薦任_資訊處理:程式語言#80532
科目:程式語言
年份:108年
排序:0

申論題內容

⑷請寫一個遞迴函式 sumall 用以加總一個串列(list)中所有數字。例如 (sumall nil)回傳 0,(sumall ‘(100))回傳 100,(sumall ‘(1 2 3 4 5)) 回傳 15。(10 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
這裡是一個用 Scheme/Lisp 語言寫的遞迴函式 sumall,用以加總一個串列中的所有數字:
scheme
複製程式碼
(define (sumall lst)
  (if (null? lst)
      0
      (+ (car lst) (sumall (cdr lst)))))
這個函式的工作原理如下:
當串列為空時,返回 0。
否則,返回串列的第一個元素與剩餘元素的和。這是通過將 car(取得第一個元素)和遞迴調用 sumall 函式來計算剩餘元素的和實現的。
下面是一些測試例子:
scheme
複製程式碼
(sumall '())           ; 回傳 0
(sumall '(100))        ; 回傳 100
(sumall '(1 2 3 4 5))  ; 回傳 15
這些例子說明了 sumall 函式如何正確地處理不同的輸入情況並返回預期的結果。