Ir para conteúdo
Fórum Script Brasil
  • 0

Golden Mean


Braddock11

Pergunta

Galera meu professor de computação pediu para que resolvesse este programa, valendo um ponto extra. Eu não estou conseguindo resolver de jeito nenhum, será que alguém consegue resolver ou dar dicas de como se resolve? Obrigado, segue abaixo a questão:

O valor da chamada “Golden mean” () ´e definido como:

Phi = (V5 - 1)/2 = 0.61803398

O aluno pode verificar, facilmente, que a recursao:

Phi^n+1 = phi^n−1 − phi^n

fornece o valor das potˆencias inteiras de partindo de 0 = 1 e 1 = 0.61803398.

Assim, o calculo de potencias inteiras de pode ser feito por operacoes de

subtracao no lugar de multiplicacoes sucessivas e, portanto com menor custo

computacional.

Entretanto, pode-se observar que a partir de certas potencias a equacao

2 torna-se instavel quando efetuada por um programa de computador. Implemente

um programa que calcule as potencias inteiras de usando a multiplicaçao sucessiva e usando uma funcao recursiva.

Obrigado a todos.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom dia!

Esta lógica é complicada mesmo mas o principal é encontrar no enunciado o que precisa ser calculado ao invés de se prender à história... :)

Segue abaixo um programa para fazer o cálculo pelos dois métodos:

#include <math.h>
#include <stdio.h>

float CalcPhiN(int n)
{
        if(n <  0) return 0;
        if(n == 0) return 1;
        if(n == 1) return (sqrt(5) - 1)/2;

        return CalcPhiN(n-2) - CalcPhiN(n-1);
}

int main(void)
{
        int n, i;
        float result, phi = (sqrt(5) - 1)/2;

        printf("Valor de phi: %f\n", phi);

        printf("Digite a potencia de phi: ");
        scanf("%d", &n);

        if(n<0) {
                printf("Potencia invalida! Deve ser >= a 0.\n");
                return 1;
        } else {
                result = 1;
                for(i=0; i<n; i++)
                        result *= phi;
        }

        printf("Metodo 1: Multiplicacao\n\tphi ^ n = %f\n", result);
        printf("Metodo 2: Recursao\n\tphi ^ n = %f\n", CalcPhiN(n));

        return 0;
}

Abraços,

Marcelo Utikawa da Fonseca

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...