2012-03-24 28 views
1

と、元の文字列だけでなく、文字列内の母音を印刷その文字列中の母音の逆順も含まれます。たとえば、文字列が 'Horse'の場合、出力は 'Horse eo'になります。私は、そのパラメータとして、いくつかの文字列だけでなく、その文字列のな長さになるだろう再帰関数を記述しようとし、その後、元の文字列をプリントアウトしてる再帰

私はとのトラブルを抱えていることは、まだ逆の順番で母音を取得中に印刷された元の文字列を取得する方法です。私は擬似コードでこの関数を書いています。逆の母音だけをどのように出力するのかは次のようになります。

MODULE VowelRecursion(String, n) 
    IF n != 0 THEN 
     letter := first letter of String 
     vowel := "" 
     IF letter == vowel THEN 
      vowel := letter 
     ENDIF 
     VowelRecursion(remainder of String, n-1) 
     Print(vowel) 
     ENDIF 
ENDMODULE 

私が述べたように、私が持っている問題は、私は母音の発見がなされた後、元の文字列が最初に印刷する必要がありますように、印刷された元の文字列を取得する方法を見つけ出す、とにすることができないということですnが0になった後で最初に返す必要はありませんか?その問題は、文字列の残数がの関数を呼び出しているので、n == 0のときは空の文字列になります。

これは私が学校のために解決する必要がある問題であるので、私はすべての準備ができて解決策を探していないんだけど、私は私の思考プロセスが間違っている場合聞きしたいのですが、私はに使用できる方法の種類を必要なものを達成する。

ありがとうございます。

答えて

0

次の再帰レベルに降下する前にletterを印刷することができます。つまり、VowelRecursion(remainder of String, n-1)を呼び出す直前です。

Print(letter) 
VowelRecursion(remainder of String, n-1) 
Print(vowel) 
+0

ありがとうございます。いくつかのテストでは、私は今働くための機能を得ることができるように見えます。 – user1290164

0

再帰中に元の文字列を渡すことができます。その文字列は変更しませんが、再帰が行われたときにその文字列を使用するだけです。また、母音を見つけるときに母音を印刷することはできません。あなたはそれらをどこかに保管し、完了したら印刷するだけです。元の文字列とこれまでに見つかった母音と(計算された)文字列(最初は空)を含むパラメータを:

これは2つのパラメータを追加するべきであることを意味します。ヒントとして、VowelRecursion("Horse", "Horse", "", 5)という再帰関数を使用してこの問題を解決できます。 n = 0の場合は、目的の結果を印刷するのに必要なすべての値が得られます。

+0

返事をありがとう。私は、元の記事では、問題の記述は、関数が以前に言及されたパラメータ文字列とその長さを得ることだけが許可されると述べていることを言及していませんでした。私はパラメータで元の文字列を引き継ぐことがどのように役立つかを見ることができます。 – user1290164

関連する問題