Ir ao conteúdo
  • Cadastre-se

C Função Recursiva para Divisores


Posts recomendados

Olá Fórum!

Estou com um exercício que pede para fazer duas funções recursivas, uma para calculo de fatorial e outra para apresentar os divisores de um número inteiro.

A primeira função recursiva eu consegui, a segunda não estou conseguindo desenvolver;

#include<stdio.h>

int fatorial(int n){
	
	if(n==0){
		return 1;
	}else{
		return n*fatorial(n-1);
	}
	
}

void divisores(int n){
int i,r;
	
	divisores(n-1);
	r=n%n-1;
	if(n==0){
		return 0;
	}else{
		printf("%i",r);
	}

}


main(){
	int x;
	
	x=fatorial(4);
	printf("%i\n",x);
	divisores(10);
	
	system("pause");
	return 0;
}

Por favor me ajude!

Link para o comentário
Compartilhar em outros sites

Consegui fazer assim:

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

void divisores(unsigned numero, unsigned divisor){
    if(divisor == 0){
        divisor = (int)sqrt(numero);
        if(divisor * divisor == numero){
            printf("%d, ", divisor);
        }
        if (divisor > 1) {
            divisores(numero, divisor-1);
        }
    }
    else if(divisor > 1) {
        if(numero % divisor == 0){
            printf("%d, %d, ", divisor, numero/divisor);
        }
        divisores(numero, divisor-1);
    }
    else {
        printf("1, %d\n", numero);
    }
}

int main()
{
    divisores(60, 0);

    return 0;
}

Chama a função passando o número e 0 como divisor inicial (como 0 nunca é divisor a função usa a raiz quadrada do número para substituir o 0, e conta regressivamente até 1).

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!