我正在參加計算機科學課程的介紹,有一個問題需要我編寫一個函數,該函數需要一個數字和一個數字的列表,並返回列表中總和小於給定數字的數字。我寫了函數簽名,定義和檢查期望,但我卡住了。該函數需要假設帶有lambda的中間學生。我不想在這裏有任何直接的答案。只是幫助,以便我可以自己找到答案。球拍函數返回所有總和小於給定數字的數字嗎?
我知道它需要使用遞歸。也許需要幫手功能。
;; sum-up-to: lon, number -> lon
;; consumes a list of numbers and a number and
;; returns the numbers in the list whose sum is
;; less than or equal to the given number
(define the-numbers (list 1 2 3 4 5 6 7 8 9))
(check-expect (sum-up-to the-numbers 7) (list 1 2 3))
(check-expect (sum-up-to the-numbers 18) (list 1 2 3 4 5))
(check-expect (sum-up-to the-numbers 45) the-numbers)
我們可以假設,輸入列表是按升序排序?如果不是,我們可以使用現有的分揀程序嗎? –
是,升序排列。它只返回列表中總和小於或等於給定數字的第一個數字。 –
好吧,那麼我的回答是正確的:)。忘記排序輸入列表,因爲我們可以假設列表已經排序。 –