OneCompiler

Lista 1 MD2

O cálculo de n! utilizando recursividade

#include <stdio.h>

int fatorial(int n) {
    if (n == 0) {
        return 1;
    } else {
        return n * fatorial(n - 1);
    }
}
int main() {
    int numero;
    printf("Digite o número:");
    scanf("%d", &numero);

    printf("O fatorial de %d é %d\n", numero, fatorial(numero));

    return 0;
} 

A sequência de Fibonacci

#include <stdio.h>

int fibonacci(int n) {
    if (n == 0) {
        return 0;
    } else if (n == 1) {
        return 1;
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}

int main() {
    int numero;
    printf("Digite o número:");
    scanf("%d", &numero);

    printf("O termo %d da sequência de Fibonacci é %d\n", numero, fibonacci(numero));

    return 0;
}

A impressão recursiva dos números naturais de 1 a n (exemplo teste 1 a 10)

#include <stdio.h>

void print_naturais(int n) {
    if (n == 1) {
        printf("%d\n", n);
        return;
    } 
    
    print_naturais(n - 1);
    printf("%d\n", n);
}

int main() {
    int numero;
    printf("Digite o número:");
    scanf("%d", &numero);

    print_naturais(numero);

    return 0;
}

Um método recursivo que receba como entrada um número inteiro positivo n e retorne 1 + 2 + 3 + 4 + … + n

#include <stdio.h>

int soma_naturais(int n){
   if (n == 1){
    return 1;
   }

   return n + soma_naturais(n - 1);
}

int main(){
    int numero;
    printf("Digite o número:");
    scanf("%d", &numero);

    printf("A soma de 1 até %d é %d\n", numero, soma_naturais(numero));

    return 0;
}

Algoritmo de Euclides para o cálculo do MDC

#include <stdio.h>

int euclides(int n1, int n2) {
    int quociente = n1 / n2;
    int res = n1 - (quociente * n2);

    if (res > 0) {
        euclides(n2, res);
    } else {
        return n2;
    }
}

int main() {
    int n1;
    int n2;

    printf("Digite o primeiro número:");
    scanf("%d", &n1);
    printf("Digite o segundo número:");
    scanf("%d", &n2);

    printf("O mdc de %d e %d é %d\n", n1, n2, euclides(n1, n2));

    return 0;
}

Calcular o MMC(a, b) a partir do MDC(a, b)

#include <stdio.h>

int mdc(int n1, int n2) {
    int res = n1 % n2;
    if (res > 0) {
        return mdc(n2, res);
    } else {
        return n2;
    }
}

int mmc(int n1, int n2) {
    return (n1 * n2) / mdc(n1, n2);
}

int main() {
    int n1;
    int n2;

    printf("Digite o primeiro número:");
    scanf("%d", &n1);
    printf("Digite o segundo número:");
    scanf("%d", &n2);

    printf("O mmc de %d e %d é %d\n", n1, n2, mmc(n1, n2));

    return 0;
}

Tabela Z_n para adição modular

#include <stdio.h>

void z_adicao(int n) {
    printf("+ ");
    for (int coluna = 0; coluna < n; coluna++) {
       printf("%d ", coluna);
    }
    printf("\n");

    for (int linha = 0; linha < n; linha++) {
        printf("%d ", linha);
        for (int coluna = 0; coluna < n; coluna++) {
            int result = (linha + coluna) % n;
            printf("%d ", result);
        }
        printf("\n");
    }
}

int main() {
    int numero;
    printf("Digite o número:");
    scanf("%d", &numero);

    printf("Tabela z_%d de adição modular:\n", numero);
    z_adicao(numero);

    return 0;
}

Tabela Z_n para multiplicação modular

#include <stdio.h>

void z_multiplicacao(int n) {
    printf("x ");
    for (int coluna = 0; coluna < n; coluna++) {
       printf("%d ", coluna);
    }
    printf("\n");

    for (int linha = 0; linha < n; linha++) {
        printf("%d ", linha);
        for (int coluna = 0; coluna < n; coluna++) {
            int result = (linha * coluna) % n;
            printf("%d ", result);
        }
        printf("\n");
    }
}

int main() {
    int numero;
    printf("Digite o número:");
    scanf("%d", &numero);

    printf("Tabela z_%d de multiplicação modular:\n", numero);
    z_multiplicacao(numero);

    return 0;
}