Recursão: deslocamento à direita por divisão

A operação de deslocamento à direita é semelhante à divisão inteira arredondada para baixo por potências de dois; portanto, o processo é repetitivo e pode ser feito de forma recursiva.

Cálculo de exemplo usando o operador de deslocamento à direita ( >> ):

80 >> 3 = floor(80/2^3) = floor(80/8) = 10
-24 >> 2 = floor(-24/2^2) = floor(-24/4) = -6
-5 >> 1 = floor(-5/2^1) = floor(-5/2) = -3

Escreva uma função que imite (sem usar >>) o operador de deslocamento à direita e retorne o resultado dos dois inteiros fornecidos.

Exemplos

shiftToRight(80, 3) ➞ 10

shiftToRight(-24, 2) ➞ -6

shiftToRight(-5, 1) ➞ -3

shiftToRight(4666, 6) ➞ 72

shiftToRight(3777, 6) ➞ 59

shiftToRight(-512, 10) ➞ -1

Observações

  • Não haverá valores negativos para o segundo parâmetro y.
  • Este desafio consiste em recriar a operação de deslocamento à direita; portanto, é proibido usar diretamente o operador.
  • Espera-se que você resolva este desafio por meio de recursão.
  • Uma versão iterativa deste desafio pode ser encontrada por meio deste link.
  • Uma coleção de desafios de recursão pode ser encontrada por meio deste link.