[解決済み] リストを反転させるにはどうしたらいいですか?
2022-02-07 03:46:13
質問内容
Schemeでリストを反転させる関数は何ですか?
ネストされたリストを扱えるようにする必要があります。そうすれば、もしあなたが
(reverse '(a (b c d) e))
を取得します。
(e (b c d) a)
を出力します。
この問題にどのようにアプローチすればよいのでしょうか?ただ答えを求めるのではなく、勉強になるようなものを探しています。
どのように解決するのですか?
使用する。
(define (reverse1 l)
(if (null? l)
nil
(append (reverse1 (cdr l)) (list (car l)))
)
)
説明する。
ルール
- リストが空の場合、逆方向のリストも空です。
- そうでない場合は、リストの逆尾の後ろに、リストの最初の要素を追加します。
このコードをこのように見てください。
reverse1
は関数名、lはパラメータです。リストが空の場合、逆もまた空です。
そうでなければ
reverse1
関数に、リストの末尾である (cdr l) を渡して、リストとして作成した最初の要素 (car l) にそれを追加します。
あなたの例(擬似コード)では
1st iteration
l=>(a (bcd)e)
car l => a
cdr l => (bcd)e
list(car l) =>(a)
------------------
reverse( cdr l)"+"(a)
------------------
2nd iteration
l=>((bcd)e)
car l => (bcd)
cdr l =>e
list(car l)=>(bcd)
--------------------
reverse(cdr l)"+"((bcd))+(a)
-----------------------
3rd iteration
l=>e
car l=> e
cdr l => nil
list (car l) =>(e)
-------------------------
(e (bcd)a)
関連
-
[解決済み】再帰使用時のOcamlエラーUnbound Value
-
[解決済み] 再帰的な関数をフローチャートで表現するには?
-
[解決済み] 最後の関数の再帰呼び出しで「scheme application not a procedure」と表示された
-
[解決済み] Pythonでリストを逆順にトラバースする
-
[解決済み] 辞書マッピングの反転/逆引き
-
[解決済み] range()でリストを逆順に表示する?
-
[解決済み] 再帰から反復への道
-
[解決済み】再帰はループより速いことがあるのか?
-
[解決済み】Javaでリストに反転したリストビューを取得する方法は?
-
[解決済み] 再帰性はそれ自体が特徴なのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] リストを反転させるにはどうしたらいいですか?
-
[解決済み] 最後の関数の再帰呼び出しで「scheme application not a procedure」と表示された
-
[解決済み] Fatal error.の解決方法 PHPの「Fatal error: Maximum function nesting level of '100' reached, aborting!
-
[解決済み] Schemeにおける再帰的関数
-
[解決済み] Lispで再帰関数はどのように動作するのですか?
-
[解決済み] 再帰とループの比較
-
[解決済み] 再帰から反復への道
-
[解決済み] 再帰的関数の複雑さの決定(Big O記法)
-
[解決済み] foldrとfoldl(またはfoldl')の意味するところ
-
[解決済み] 再帰性はそれ自体が特徴なのか?