Как разработать алгоритм для имитации умножения путем сложения. введите два целых числа. они могут быть нулевыми, положительными или отрицательными ..
def multiply(a, b): if (a == 1): return b elif (a == 0): return 0 elif (a < 0): return -multiply(-a, b) else: return b + multiply(a - 1, b)
val:= 0 bothNegative:=false if(input1 < 0) && if(input2 < 0) bothNegative=true if(bothNegative) smaller_number:=absolute_value_of(smaller_number) for [i:=absolute_value_of(bigger_number);i!=0;i--] do val+=smaller_number return val;
некоторый псевдокод:
function multiply(x, y) if abs(x) = x and abs(y) = y or abs(x) <> x and abs(y) <> y then sign = 'plus' if abs(x) = x and abs(y) <> y or abs(x) <> x and abs(y) = y then sign = 'minus' res = 0 for i = 0 to abs(y) res = res + abs(x) end if sign = 'plus' return res else return -1 * res end function
Как насчет целых чисел:
int multiply(int a, int b) { int product = 0; int i; if ( b > 0 ) { for(i = 0; i < b ; i++) { product += a; } } else { for(i = 0; i > b ; i--) { product -= a; } } return product; }
mul(a,b) { sign1=sign2=1; if(a==0 || b==0) return 0; if(a<0){ sign1=-1; a=-a; } if(b<0){ sign2=-1; b=-b; } s=a; for(i=1;i<b;i++) s+=a; if(sign1==sign2) return s; else return -s; }