将两个整数相乘,不使用乘法、除法和位运算符,也不使用循环

通过使用递归,我们可以在给定的约束条件下将两个整数相乘。 要将x和y相乘,递归地将x和y相加。

null

C++

// C++ program to Multiply two integers without
// using multiplication, division and bitwise
//  operators, and no loops
#include<iostream>
using namespace std;
class GFG
{
/* function to multiply two numbers x and y*/
public : int multiply( int x, int y)
{
/* 0 multiplied with anything gives 0 */
if (y == 0)
return 0;
/* Add x one by one */
if (y > 0 )
return (x + multiply(x, y-1));
/* the case where y is negative */
if (y < 0 )
return -multiply(x, -y);
}
};
// Driver code
int main()
{
GFG g;
cout << endl << g.multiply(5, -11);
getchar ();
return 0;
}
// This code is contributed by SoM15242


C

#include<stdio.h>
/* function to multiply two numbers x and y*/
int multiply( int x, int y)
{
/* 0  multiplied with anything gives 0 */
if (y == 0)
return 0;
/* Add x one by one */
if (y > 0 )
return (x + multiply(x, y-1));
/* the case where y is negative */
if (y < 0 )
return -multiply(x, -y);
}
int main()
{
printf ( " %d" , multiply(5, -11));
getchar ();
return 0;
}


JAVA

class GFG {
/* function to multiply two numbers x and y*/
static int multiply( int x, int y) {
/* 0 multiplied with anything gives 0 */
if (y == 0 )
return 0 ;
/* Add x one by one */
if (y > 0 )
return (x + multiply(x, y - 1 ));
/* the case where y is negative */
if (y < 0 )
return -multiply(x, -y);
return - 1 ;
}
// Driver code
public static void main(String[] args) {
System.out.print( "" + multiply( 5 , - 11 ));
}
}
// This code is contributed by Anant Agarwal.


蟒蛇3

# Function to multiply two numbers
# x and y
def multiply(x,y):
# 0 multiplied with anything
# gives 0
if (y = = 0 ):
return 0
# Add x one by one
if (y > 0 ):
return (x + multiply(x, y - 1 ))
# The case where y is negative
if (y < 0 ):
return - multiply(x, - y)
# Driver code
print (multiply( 5 , - 11 ))
# This code is contributed by Anant Agarwal.


C#

// Multiply two integers without
// using multiplication, division
// and bitwise operators, and no
// loops
using System;
class GFG {
// function to multiply two numbers
// x and y
static int multiply( int x, int y) {
// 0 multiplied with anything gives 0
if (y == 0)
return 0;
// Add x one by one
if (y > 0)
return (x + multiply(x, y - 1));
// the case where y is negative
if (y < 0)
return -multiply(x, -y);
return -1;
}
// Driver code
public static void Main() {
Console.WriteLine(multiply(5, -11));
}
}
// This code is contributed by vt_m.


PHP

<?php
// function to multiply
// two numbers x and y
function multiply( $x , $y )
{
/* 0 multiplied with
anything gives 0 */
if ( $y == 0)
return 0;
/* Add x one by one */
if ( $y > 0 )
return ( $x + multiply( $x ,
$y - 1));
/* the case where
y is negative */
if ( $y < 0 )
return -multiply( $x , - $y );
}
// Driver Code
echo multiply(5, -11);
// This code is contributed by mits.
?>


Javascript

<script>
// javascript program to Multiply two integers without
// using multiplication, division and bitwise
//  operators, and no loops
/* function to multiply two numbers x and y*/
function multiply( x,  y)
{
/* 0 multiplied with anything gives 0 */
if (y == 0)
return 0;
/* Add x one by one */
if (y > 0 )
return (x + multiply(x, y-1));
/* the case where y is negative */
if (y < 0 )
return -multiply(x, -y);
}
// Driver code
document.write( multiply(5, -11));
// This code is contributed by todaysgaurav
</script>


输出:

-55

时间复杂度:O(y),其中y是函数multiply()的第二个参数。

辅助空间:O(y) 俄罗斯农民(使用位运算符乘以两个数字) 如果您发现上述任何代码/算法不正确,请写下评论,或者找到更好的方法来解决相同的问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享