1

ここでは同様の問題は見つかりませんでしたが、クラスのスキームでプログラムを作成しようとしているので、ヒントをいただければ幸いです。これを実装する方法については基本的に混乱していますが、これがどのように機能するかについての例です。(index 5)リストを返すことになっています(1 2 3 4 5)。私はいくつかのアイデアを持っています、それらはうまくいくでしょうか?

  1. 引数をグローバル変数にし、関数を再帰的に呼び出すたびにインクリメントします。これまで私が抱えていた問題は、セットを使用することです!リストを返しますが、出力は次のようになります(#value #value ....)

  2. リスト(5 4 3 2 1)を与える単純な再帰関数をプログラムし、それを逆にしますが、それはできますか?

4

2 に答える 2

0

ソリューション2は、これまでで最もクリーンで最も複雑でないオプションであるため、私はソリューション2を使用します。再帰を理解する必要があります。ヒント:で基本ケースに到達すると(index 0)、空のリストが返されます。後で元に戻すには、実際の再帰をヘルパー関数に入れます。

(define (index-r n)
  ...)

(define (index n)
  (reverse (index-r n)))

(または名前付きletループを使用します。)

于 2012-09-25T10:51:37.723 に答える
0

リスト(5 4 3 2 1)を与える単純な再帰関数をプログラムし、それを逆にしますが、それを行うことはできますか?

リスト(1 2 3 4 5)を与える再帰関数を直接記述してみませんか?私があなたのためにそれをしないように「擬似コード」で:

f(x) = cons x (f(x+1))
f(5) = (list 5)

f(1)次に、 …</p> に電話します

于 2012-09-26T07:22:07.903 に答える