Ir ao conteúdo

Posts recomendados

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

//Recursividade
/*
Programa com função recursiva que calcule a soma dos primeiros n cubos : S(n) = 1^3 + 2^3 +...+n^3
*/
int soma(int n){
    if (n == 0){
      return 0;
    }else{
      return (n + soma(pow(n,3)));
    }
}

    
int main(){
	int n;
	printf("Informe um inteiro positivo: ");
	scanf("%d", &n);
	

	printf("Soma: %d\n", soma(n));
	
	return 0;
}

Dúvida: é possível usar a função pow fora do main? Fiz esse programa que não acusou erro, mas não funcionou....

Postado
1 hora atrás, KXSY disse:

tem que passar o parâmetro -lm para o compilador.

Não entendi, o que significa -lm, pesquisei no google, e vi que tenho que colocar o parâmetro no final da linha de comando, mas não diz qual linha de comando...

Postado
1 hora atrás, Flávio Pedroza disse:

Sua lógica de recursividade está errada. Nunca tem fim.


int soma(int n){
    if (n == 0){
      return 0;
    }else{
      return (soma(n-1)+pow(n, 3));
    }
  
}

 

Perfeito!!! 

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

int potencia(int k){
  int n;
  if(k == 0){
    return 0;
  }else{
    return(potencia(k-1) + pow(k,n));
  }
}

int main(){
  int k, n;
  printf("----------Calculo de Potência Kn-----------\n");
  printf("Informe um inteiro positivo K: ");
  scanf("%d", &k);
  printf("Informe um inteiro positivo n: ");
  scanf("%d", &n);

  printf("O valor de %d elevado a %d é :%d\n", k,n, potencia(k));
printf("--------------------FIM--------------------\n");
  return 0;
}

Tentei melhorar o programa, mas acho que ainda não entendi a recursividade. É possível substituir o expoente por uma variável n? ou o comando pow aceita, apenas, valor?

Postado

A função pow(b,e) é a potência baseexpoente.

 

Já potencia (k) não é adequada, primeiro porque já existe uma função potência, segundo a potência tem 2 argumentos.

Sim sua função "potência" pode ter um segundo argumento -n- que é o expoente da base k.

 

Como sugere bem aqui: 

1 hora atrás, nigolino disse:

----------Calculo de Potência Kn-----------

 

no cabeçario da função para sua chamada.

int potencia (k,n)

  • Curtir 1
Postado
#include<stdio.h>
#include<math.h>
//Programa com função recursiva que receba dois inteiros positivos k e n e calcule kn.
int potencia(k, n){
  
  if(k == 0){
    return 0;
  }else{
    return(pow(k,n));
  }
}

int main(){
  int k, n;
  printf("----------Calculo de Potência Kn-----------\n");
  printf("Informe um inteiro positivo K: ");
  scanf("%d", &k);
  printf("Informe um inteiro positivo n: ");
  scanf("%d", &n);

  printf("O valor de %d elevado a %d é :%d\n", k,n, potencia(k));
printf("--------------------FIM--------------------\n");
  return 0;
}
3 horas atrás, MB_ disse:

A função pow(b,e) é a potência baseexpoente.

 

Já potencia (k) não é adequada, primeiro porque já existe uma função potência, segundo a potência tem 2 argumentos.

Sim sua função "potência" pode ter um segundo argumento -n- que é o expoente da base k.

 

Como sugere bem aqui: 

 

no cabeçario da função para sua chamada.

int potencia (k,n)

Fiz as devidas correções, mas o resultado não é o esperado o programa está usando o próprio número como expoente...

Postado
2 horas atrás, nigolino disse:

#include<stdio.h>
#include<math.h>
//Programa com função recursiva que receba dois inteiros positivos k e n e calcule kn.
int potencia(k, n){
  
  if(k == 0){
    return 0;
  }else{
    return(pow(k,n));
  }
}

int main(){
  int k, n;
  printf("----------Calculo de Potência Kn-----------\n");
  printf("Informe um inteiro positivo K: ");
  scanf("%d", &k);
  printf("Informe um inteiro positivo n: ");
  scanf("%d", &n);

  printf("O valor de %d elevado a %d é :%d\n", k,n, potencia(k));
printf("--------------------FIM--------------------\n");
  return 0;
}

Fiz as devidas correções, mas o resultado não é o esperado o programa está usando o próprio número como expoente...

faltava corrigir a linha : printf("O valor de %d elevado a %d é :%d\n", k,n, potencia(k,n));

Postado

@nigolino , você pode, por favor, explicar-me qual o problema a resolver?

 

O problema da função S(n) é como 

Em 26/08/2019 às 16:01, Flávio Pedroza disse:

Sua lógica de recursividade está errada. Nunca tem fim.


int soma(int n){
    if (n == 0){
      return 0;
    }else{
      return (soma(n-1)+pow(n, 3));
    }
  
}

 

 

 

 

Você por acaso agora está tentando um versão de pow(base,exp) recursiva também? 

Postado

Bom dia, colega, 

já resolvi no post acima:

faltava corrigir a linha : printf("O valor de %d elevado a %d é :%d\n", k,n, potencia(k,n));

 

obrigado pela atenção.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!