ループが使用されていない再帰、加算および減算を使用して数値が偶数か奇数かをチェックする方法が必要です。番号が+、 - 、および再帰のみを使用しているかどうかを調べる
私はそこまで得ることができます(私はまだ%
を使用しています):
boolean odd = (k % 2 == 1);
誰のアイデアを持っていますか?あなたがC言語でそれを行うことができ、真の0を返す(さえ)、(奇数)偽1つの戻り
ループが使用されていない再帰、加算および減算を使用して数値が偶数か奇数かをチェックする方法が必要です。番号が+、 - 、および再帰のみを使用しているかどうかを調べる
私はそこまで得ることができます(私はまだ%
を使用しています):
boolean odd = (k % 2 == 1);
誰のアイデアを持っていますか?あなたがC言語でそれを行うことができ、真の0を返す(さえ)、(奇数)偽1つの戻り
は繰り返し2(再帰)
ベースの例を引きますたとえば、次のようになります。
bool isOdd(int num)
{
if (num==2) return false;
else if(num==1) return true;
else return isOdd(num-2);
}
このプログラムは、0より大きい数値に対してのみ機能します。 Rすべての数字があなたのために運動して残っている:)
bool IsEven(int num)
{
if (num == 1) return false;
if (num == 0) return true;
return IsEven(num - 2);
}
:
感謝:)
最初に 'num == 2 'をチェックする必要があります。 –
真実、ちょうど奇妙な言葉を台無しにしました:) –
次のソリューション試すことができます:ちょうど最下位ビットをチェック
int isEven(int n) {
if (n == 0) return 1; // zero is even, return true
return isOdd(n - 1);
}
int isOdd(int n) {
if (n == 1) return 1; // one is odd, return true
else return isEven(n - 1);
}
私のために 'java.lang.StackOverflowError'を投げます。制御フローが混乱しています。 'isEven(int)'が 'n - 2'で呼び出され、' return!isEven(n); ' – Michael
に設定されています。他にどのような人為的な制限がありますか?また、特定の言語に興味がある場合や、「アルゴリズム」としてタグ付けする場合を除き、これらの言語タグを削除することもできます。 –
結果を奇数とし、前の値を偶数とする。再帰的に呼び出します。 –
あなたのタグでもっと賢明にしてください。あなたが3つの言語をタグ付けしているという事実は、あなたの質問が過度に広いという警告サインです。そしてこの質問はoopと全く関係がないようです。 – yshavit