制作功能是数字奇数或偶数

时间:2016-07-23 16:48:05

标签: function functional-programming

我想创建一个函数,通过仅使用递增或递减函数来查找数字是奇数还是偶数。没有其他运算符,如相等或模块化运算符

4 个答案:

答案 0 :(得分:1)

def isOdd(n:Int) = {
    if(n <= 1) n;
    else isOdd(n - 2);
}

这将返回1或0(真或假),无论数字n是否为奇数。 我忘了提到这段代码在Scala中可以运行。

它的尾递归也是。

答案 1 :(得分:0)

使用%mod operator

检查这样的内容
using System;

class Program
{
    static void Main()
    {
    for (int i = 0; i <= 100; i++)
    {
        if (IsOdd(i))
        {
        Console.WriteLine(i);
        }
    }
    }

    public static bool IsOdd(int value)
    {
    return value % 2 != 0;
    }
}

答案 2 :(得分:0)

也许

public bool isEven(int number){
    return number/2.0 == Convert.ToInt32(number/2.0)
} 

我不太确定你打算如何在没有等于或运算符的情况下测试数字。

卢卡斯

答案 3 :(得分:0)

也许是这样的?然而,该解决方案使用赋值和逻辑运算符。

var isEven = true;
function makeDivayanshusHomework (number) {
    if (number < 0) {
        for(i = 0; i < 2*number; i++) {
            number++;
        }
    }

    while (number > 0) {
        number--;
        isEven = isEven ? false : true;
    }

    return isEven;
}

编辑:根据sascha10000的评论,下面的解决方案甚至可能更具功能性:

function makeDivayanshusHomework (number) {
    if (Math.sqrt(number*number) > 1) {
        return makeDivayanshusHomework(number-2)
    }
    else {
        return Math.sqrt(number*number); // 1 when odd, 0 otherwise
    }
}

这几乎给我带来了sascha10000的原始答案,尽管这种方法可以优雅地处理负整数。您的老师是否指定了必须对输入进行消毒的程度?