仅使用+, - 和递归检查数字是否均匀

时间:2016-12-01 17:47:49

标签: java c# c recursion

必须有一种方法可以使用递归,加法和减法检查数字是偶数还是奇数,但不使用循环。

我只能走得那么远(但我仍在使用%):
boolean odd = (k % 2 == 1);

有人有想法吗?

谢谢:)

5 个答案:

答案 0 :(得分:1)

bool IsEven(int num)
{
    if (num == 1) return false;
    if (num == 0) return true;
    return IsEven(num - 2);
}

答案 1 :(得分:1)

只需检查最低位是否设置

  IsOdd = (k & 1) != 0;

答案 2 :(得分:0)

反复减去2(递归)

基本情况:0返回true(偶数),1返回false(奇数)

答案 3 :(得分:0)

您可以在C中执行此操作,例如:

bool isOdd(int num)
{
    if (num==2) return false;
    else if(num==1) return true;
    else return isOdd(num-2);
}

请注意,此程序仅适用于大于0的数字。如何为所有数字执行此操作留作练习:)

答案 4 :(得分:0)

您可以尝试以下解决方案:

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);
}