通过使用递归,我们可以在给定的约束条件下将两个整数相乘。 要将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