1

この関数は整数と数字を取得し、数字が整数内に偶数回出現する場合は true を返し、そうでない場合は false を返します。

例えば:

関数はdigit=1num=1125 返す必要がありtrueます。

関数はdigit=1num=1234 返す必要がありfalseます。

bool isEven(int num, int dig)
{
    bool even;

    if (num < 10)
        even = false;
    else
    {
        even = isEven(num/10,dig);

これは私がこれまでに得たもので、行き詰まっています... これは宿題なので、答えを書かないでください。

4

2 に答える 2

1

再帰を設定するには、次の 2 つのことを理解する必要があります。

  1. ベースケース。あなたが完全に処理できる簡単なケースは何ですか? たとえば、1 桁の数字を簡単に処理できますか?
  2. 他のすべてのケースをベース ケースに減らすルール。たとえば、最後の桁を切り取って、残りの部分数の解を完全な数の解に変換できますか?

あなたのコードから、これらの両方の点でいくらか進歩したことがわかります。ただし、どちらも不完全です。1 つには、コードで対象の数字を使用していないことです。

于 2012-11-26T22:13:33.810 に答える
1

式 num%10 は、数字の最後の桁を示します。これは役立つはずです。

1 桁の一致数が偶数になる可能性があるため、基本ケースは正しくありません (ゼロは偶数です)。一致ごとに答えを反転する必要があるため、再帰的なケースにも作業が必要です。

于 2012-11-26T22:15:37.990 に答える