我想创建一个函数,通过仅使用递增或递减函数来查找数字是奇数还是偶数。没有其他运算符,如相等或模块化运算符
答案 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的原始答案,尽管这种方法可以优雅地处理负整数。您的老师是否指定了必须对输入进行消毒的程度?