Ir ao conteúdo
  • Cadastre-se
saulogoiana

C Função Recursiva para Divisores

Recommended Posts

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!

Compartilhar este post


Link para o post
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).

Editado por isrnick
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×