(define (some n)
(cond
[(empty? n) false]
[(cons? n)
(+ (first n) 1)]))
再帰に問題があります。リストの最初の要素に 1 を追加します。それをリストの残りの部分に追加して、答えを組み合わせるにはどうすればよいですか?
コードにはいくつかの問題があります。入力リストをトラバースし、答えとして出力リストを作成するためのテンプレートを正しく取得する必要があります。
(define (some n)
(cond
[(empty? n) ; if the list is empty
empty] ; return the empty list, not false!
[else ; if it's not empty, then it's a list
(cons (+ (first n) 1) ; cons the new element
(some (rest n)))])) ; and advance the recursion
基本的な手順は常に同じです。リストが null (cons
現在の要素) かどうかを確認し、リストの残りの部分に再帰を進めます。具体的な詳細は問題によって異なりますが、ほとんどの場合、上記のテンプレートを使用すると正しい軌道に乗ることができます。結果は、すべての要素が 1 ずつ増えた新しいリストになります。
(some '(1 2 3 4 5))
=> '(2 3 4 5 6)