2016-07-23 3 views
-2

Я хочу, чтобы функция, чтобы найти число, является нечетным или даже с использованием только функции увеличения или уменьшения. нет другого оператора, как равный или модульным оператораСоздание функции число нечетное или даже

+1

Какой язык программирования? !! –

+0

Используйте цикл, вычтите на 2 и посмотрите, закончите ли вы 0 или 1. Или попробуйте рекурсию сделать то же самое. – PhillipXT

+0

Просто уменьшайте/увеличивайте дважды каждый раз и повторяйте до тех пор, пока не получите 1 или 0. – Bergi

ответ

0

проверить что-то подобное с% мод оператора

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; 
    } 
} 
+0

M.qassas Я хочу функцию, которая не использует модульную – Divayanshu

0

возможно

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

Я не совсем уверен, как вы собираетесь, чтобы проверить номер для того даже без оператора равенства или мод.

Лукас

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

это вернет 1 или 0 (истина или ложь) или нет число п нечетно. Я забыл упомянуть, что этот код можно запустить в Scala.

Это тоже рекурсивный хвост.

+0

Может ли объяснить ее первую строку – Divayanshu

+0

Определение функции с именем isOdd с номером n, введенным как целое. Тип возврата определяется неявным возвращаемым значением. В основном я подразумеваю основные допущения Scala. – sascha10000

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, хотя этот метод корректно обрабатывает отрицательные целые числа. Ваш учитель уточнил, в какой степени необходимо дезинформировать вход?

+1

описание товара Haha awesome имя функции. Я знаю, что это не точный комментарий. Но было слишком смешно, чтобы не комментировать это. Но это не работает. Вы изменяете переменные, которые не разрешены. – sascha10000

+1

Он по-прежнему не работает, потому что ++ - это постфиксные декременты/приращения, которые разрешают число = число + 1 или число = число + 1 => все еще мутируют переменные. Таким образом, он не работает, вам нужно будет использовать константы вместо переменных. Поэтому вы должны использовать рекурсию для своего подхода. – sascha10000

Смежные вопросы