2016-11-15 5 views
0

私は機能を構築しています:ML - 文字列を反転する。

文字列とそのサイズを取得し、それが逆に戻る
val recur = fn : string * int -> string; 

を。

しかし、多少、私はそれを建てたとして、それは、私のために動作しません。誰が私に問題を指すことができますし、多分少し修正を与える:

fun recur (s:string, sz:int) = if sz = 1 then substring(s,sz-1,sz-1) else substring(s,sz-1,sz-1)^recur(s,sz-1); 

それはなく、例えば、動作のために、作業を行う必要があります。

recur("ab",2); 

それだけ"B"を返します。

答えて

0

substringの2番目のパラメータが開始インデックスで、3番目の値が必要な長さです。

sz = 1の場合、substring(s,sz-1,sz-1)substring(s,0,0)です。これは空の文字列です。

できるだけ多くの文字を入力しようとする可能性があるので、再帰で同様の問題があります。しかし、あなたは文字のリストに変換する場合

fun recur (s:string, sz:int) = if sz = 1 
           then substring(s, 0, 1) 
           else substring(s, sz-1, 1)^recur(s, sz-1); 

文字列操作は、多くの場合簡単です::
は、あなただけのたびにサブストリング1文字にしたい

fun recur (s:string) = String.implode(List.rev(String.explode s)); 
関連する問題