Рубрики

Умножьте два целых числа без использования умножения, деления и побитовых операторов и без циклов

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

Чтобы умножить x и y, рекурсивно добавьте xy раз.

C ++

// C ++ программа для умножения двух целых чисел без
// используя умножение, деление и побитовое
// операторы, и никаких циклов
#include<iostream>

  

using namespace std;

class GFG

{

      
/ * функция для умножения двух чисел x и y * /

public : int multiply(int x, int y)

{

    / * 0, умноженное на что-либо, дает 0 * /

    if(y == 0)

    return 0;

  

    / * Добавить х по одному * /

    if(y > 0 )

    return (x + multiply(x, y-1));

  

    / * случай, когда у отрицателен * /

    if(y < 0 )

    return -multiply(x, -y);

}
};

  
// Код драйвера

int main()

{

    GFG g;

    cout << endl << g.multiply(5, -11);

    getchar();

    return 0;

}

  
// Этот код предоставлен SoM15242

С

#include<stdio.h>
/ * функция для умножения двух чисел x и y * /

int multiply(int x, int y)

{

   / * 0, умноженное на что-либо, дает 0 * /

   if(y == 0)

     return 0;

  

   / * Добавить х по одному * / 

   if(y > 0 )

     return (x + multiply(x, y-1));

   

  / * случай, когда у отрицателен * / 

   if(y < 0 )

     return -multiply(x, -y);

}

  

int main()

{

  printf("\n %d", multiply(5, -11));

  getchar();

  return 0;

}

Джава

class GFG {

      

    / * функция для умножения двух чисел x и y * /

    static int multiply(int x, int y) {

          

        / * 0, умноженное на что-либо, дает 0 * /

        if (y == 0)

            return 0;

      

        / * Добавить х по одному * /

        if (y > 0)

            return (x + multiply(x, y - 1));

      

        / * случай, когда у отрицателен * /

        if (y < 0)

            return -multiply(x, -y);

              

        return -1;

    }

      

    // Код драйвера

    public static void main(String[] args) {

          

        System.out.print("\n" + multiply(5, -11));

    }

}

  
// Этот код предоставлен Anant Agarwal.

python3

# Функция умножения двух чисел
# х и у

def multiply(x,y):

  

    # 0 умножается на что-нибудь

    # дает 0

    if(y == 0):

        return 0

  

    # Добавить х один за другим

    if(y > 0 ):

        return (x + multiply(x, y - 1))

  

    # Случай, когда у отрицательный

    if(y < 0 ):

        return -multiply(x, -y)

      
# Код драйвера

print(multiply(5, -11))

  
# Этот код предоставлен Anant Agarwal.

C #

// Умножаем два целых числа без
// используя умножение, деление
// и побитовые операторы, и нет
// петли

using System;

  

class GFG {

      

    // функция для умножения двух чисел

    // х и у

    static int multiply(int x, int y) {

          

        // 0, умноженное на что-либо, дает 0

        if (y == 0)

            return 0;

      

        // Добавить х один за другим

        if (y > 0)

            return (x + multiply(x, y - 1));

      

        // случай, когда у отрицателен

        if (y < 0)

            return -multiply(x, -y);

              

        return -1;

    }

      

    // Код драйвера

    public static void Main() {

          

        Console.WriteLine(multiply(5, -11));

    }

}

  
// Этот код предоставлен vt_m.

PHP

<?php
// функция для умножения
// два числа x и y

function multiply($x, $y)

{
/ * 0 умножается на
что-нибудь дает 0 * /

if($y == 0)

    return 0;

  
/ * Добавить х по одному * /

if($y > 0 )

    return ($x + multiply($x

                          $y - 1));

  
/ * случай, когда
у отрицательный * /

if($y < 0 )

    return -multiply($x, -$y);

}

  
// Код драйвера

echo multiply(5, -11);

  
// Этот код предоставлен mits.
?>


Выход:

-55

Сложность времени: O (y), где y — второй аргумент функции multiply ().

Русский крестьянин (умножить два числа с помощью побитовых операторов)

Пожалуйста, пишите комментарии, если вы обнаружите, что какой-либо из приведенных выше кодов / алгоритмов неверен, или найдете более эффективные способы решения той же проблемы.

Рекомендуемые посты:

Умножьте два целых числа без использования умножения, деления и побитовых операторов и без циклов

0.00 (0%) 0 votes