0
(define (some n)
  (cond
    [(empty? n) false]
    [(cons? n)
     (+ (first n) 1)]))

再帰に問題があります。リストの最初の要素に 1 を追加します。それをリストの残りの部分に追加して、答えを組み合わせるにはどうすればよいですか?

4

1 に答える 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)
于 2013-10-26T01:20:46.100 に答える