Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bryanmg

Recursividade

Recommended Posts

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

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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

   

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.