Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bryanmg

Recursividade

Mensagens Recomendadas

bryanmg

Oi Boa Tarde sou iniciante em Python e preciso de ajuda sobre recursividade: Supondo que não existam os operadores de divisão (/ e %). Pede-se então que seja construída uma função que realize esta operação. A função deverá receber como parâmetros três números inteiros: o dividendo, o divisor e o número de casas decimais do resultado da divisão, e deverá retornar o resultado da divisão (o quociente, um número real) do dividendo pelo divisor com o número de casas decimais especificado. A divisão deve ser implementada através de subtrações sucessivas.

Encontre na net um código em portugol parecido com isso, mas não sei como implementar em python

Pelo Amor de Deus alguém me ajuda!!!!!!!!

Função divisaoRec(inteiro num, inteiro den) retorna Inteiro
Inicio
   Se(num < den)
          Então
                 Função_Retorna(0);
          Senão
                 Função_Retorna(divisaoRec(num-den, den) + 1);
          Fim_Se
Fim_Funcão

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djthyrax

Para definires uma função xpto que recebe como elementos a e b fazes:

def xpto(a, b):
   #código

Para fazeres um estrutura se...senão fazes:

if condicao:
   #codigo caso a condicao seja verdadeira
else:
   #codigo caso a condicao seja falsa

Para retornares o valor que a função retornaria se a fosse a-3 e o b fosse o mesmo:

return xpto(a-3, b)

Ou para retornar um valor fixo:

return 5


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bryanmg

Ficaria assim então?

#coding latin -1


def xpto(num, den):

    if num < den:
        return 0
    else:
        return xpto (num-den, den) + 1

   

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djthyrax

Sim, esse código é o equivalente em python. :P


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrosorio

Ficaria assim então?

#coding latin -1


def xpto(num, den):

    if num < den:
        return 0
    else:
        return xpto (num-den, den) + 1

   

Atenção que essa função faz a divisão inteira e não a divisão, como é pedido.


Não respondo a dúvidas por mensagem.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrosorio

Então como eu posso fazer??

Acho que a ideia do exercício é perceberes como funciona a recursividade e raciocinares nesse âmbito. Repara que tens que receber um parâmetro que te diga quantas casas decimais o resultado deve ter. Vais ter que trabalhar com isso. Se sabes fazer a divisão inteira também consegues fazer a outra porque não passa de uma sequência de divisões inteiras.


Não respondo a dúvidas por mensagem.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bryanmg

Conversei com um amigo e ele me ensinou um outro codigo que ficaria melhor assim:

#coding latin -1

def divMod(a, b):

   if (a >= :
       (x, y) = divMod(a-b, b)
       return (1+x, y)
   else:
       return (0, a)

def divF(a, b, prec):
       d1, m = divMod(a, b)
       d2, m2 = divMod(m*10**prec, b)
       return d1 + d2*(10**(-prec))

Gostaria de saber se ta certo e como eu posso fazer por meio deste codigo para que ele leia um arquivo com dados do pc e ao final da execução seja gerado um arquivo de saida com as respostas, ou seja o arquivo de entrada vai dar as entradas e de sáida as respostas.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.