私はこのタスクをuniで行いますが、私は長い間研究してきましたが、 。 リストが回文であるかどうかを確認する必要があります。ほとんどのフロア(n/2)回で再帰的に呼び出し、補助リストを割り当てないため(リストコンストラクタは使用できません) アイデアTbh、私は完全な解決策よりもアルゴリズムが好きです。OCaml関数は、リストが回り(n/2)回帰呼び出しとリスト割り付けなしのpalindromeかどうかを確認する関数です。
0
A
答えて
2
を、私はこれで出ているし、それが動作します:
let palindrom l =
let rec aux l0 l1 =
match (l0, l1) with
| _,[] -> (true,[])
| hd :: tl, [x] -> (hd = x, tl)
| _, hd1 :: tl1 -> let (pal, ll) = aux l0 tl1 in
match ll with
| [] -> (pal, [])
| hd::tl -> (pal && hd1 = hd, tl) in
match l with
[] -> true
| _ -> fst (aux l l)
0
二つの引数を取り、中にあなたが途中で
- ことを再帰的ヘルパー関数を使用することができます。リストの残りの部分、および二倍遠くの開始からあるリストの残りの部分をチェックされるリスト。
- は、チェック対象リストの途中でベースケースに達します(2番目のリストが空になるか、または奇数の場合は単一要素のみ)
- が途中で返されます。リストのための
option
、まだ平等のために逆にチェックする必要があり、残り - 回文が
例と一致しなかった場合、またはNone
:
// in
hannah hannah
annah nnah
nnah ah
nah
// out
n <-> nah
a <-> ah
h <-> h
関連する問題
- 1. エラー - リストを渡すことによる再帰関数呼び出し - OCaml
- 2. 関数呼び出しが足りない引数リスト警告
- 3. Ocamlでの再帰呼び出しの回数のカウント
- 4. 関数は、2回しか呼び出せない関数を返します。
- 5. 関数を呼び出す複数回
- 6. 関数呼び出しが静的かどうかを確認する
- 7. 関数が呼び出されたかどうかを確認しますか?
- 8. 毎回ではなくJavaScript関数を1回だけ呼び出す
- 9. PS関数で関数、2回目の呼び出し方法
- 10. Pythonで関数のリストを再帰的に呼び出しますか?
- 11. ユニティRewardAd関数呼び出しより多くの時間は、一回だけ
- 12. duplicate()関数のcons関数の呼び出し回数を制限することはできますか?
- 13. Angular5 * ngIf = "関数呼び出し(); L "関数が4回呼び出されるようにする
- 14. selectステートメント内でスカラー関数を複数回呼び出すことは、関数を複数回実行しますか?その場合、回避する方法
- 15. Golang switch文が関数を1回だけ呼び出す
- 16. 静的変数の関数を2回呼び出すか?
- 17. PythonのcProfileでは、呼び出し回数とプリミティブ呼び出し回数の違いは何ですか?
- 18. 各呼び出しで再帰関数の値を確認します。
- 19. 関数が呼び出されたかどうかを確認するClojureマクロ
- 20. 関数呼び出しの回数を減らす
- 21. jquery load関数のページ呼び出しは1回限りです
- 22. 関数が何回呼び出されたか(偶数/奇数回)
- 23. jQueryで関数が2回呼び出されるのはなぜですか?
- 24. OCaml:別の関数内で関数を呼び出す
- 25. Swift 3.1で関数呼び出しを1回だけ行う方法は?
- 26. 関数4は角度4で2回呼び出します
- 27. 関数を1回だけ呼び出す場合は、 'use'を使用する必要がありますか?
- 28. firebaseクラウド関数が複数回呼び出されました
- 29. Nodejs関数が複数回呼び出されました
- 30. このHaskell関数で何回再帰呼び出しが起こったかを計算するには?
[help/on-topic]:* 3を参照してください。宿題の助けを求める質問には、問題を解決するためにこれまでに行った作業の概要と、問題を解決するための難しさの説明が含まれていなければなりません。 – glennsl
それが期待される解決策であるかどうかは不明ですが、継続でこれを確実に解決できます。 (それは基本的に明示的な短所を使用することなくリンクリストを割り当てています) – Bergi
'length'を使用できますか? – Bergi