我被要求寫一個球拍函數repeat-str,使用長度爲n的字符串s,併產生一個長度爲n的新列表。如果n爲0,則會生成空列表。如果n大於0,則列表中的第一個字符串包含n個n的副本,第二個字符串將是n-1,因此是第四個。Drracket遞歸
例:(repeat-str "cat") => (list "catcatcat" "catcat" "cat")
我有:
(define (repeat-str s)
(cond
[(zero? (string-length s)) empty]
[(equal? (string-length s) 1) s]
[else (make-list (string-length s) s)
(repeat-str (make-list (sub1 (string-length s)) s))]))
我試圖回憶起的作用到第二列表上獲得N-1,但我不確定該怎麼做遞歸部分。這是我可以得到3個單獨的列表,然後在最後添加它們。
**不能使用: - 一個佔位符,函數
- 拉姆達 - 複製功能
使用初學者用列表的縮寫
謝謝。
用's'作爲參數在''s'中做一個輔助函數,這樣你就知道字符串中有多少個拷貝以及何時停止。那就用那個吧。 – Sylwester