public static int RecursiveMultiply(int num1, int num2){
var smaller = Math.Min(num1, num2);
var bigger = Math.Max(num1, num2);
return RecursiveMultiplyHelper(smaller, bigger);
private static int RecursiveMultiplyHelper(int smaller, int bigger){
if (smaller == 0) return 0;
if (smaller == 1) return bigger;
var newSmaller = smaller >> 1;
var halfProd = RecursiveMultiplyHelper(newSmaller, bigger);
return (smaller % 2 == 0) ? halfProd + halfProd : halfProd + halfProd + bigger;
public static void Main()
Console.WriteLine(RecursiveMultiply(20,9));