Trabalho AV3
Linguagens de Programação – AV3
Aluno: Joao Daniel Alencar de Oliveira
Mat.:42021
1) A sequência de Fibonacci é definida por
F(0)=F(1)=1 e F(n) = F(n-1) + F(n-2), para n>1. Ou seja, F(0) = 1
F(1) = 1
F(2) = 2
F(3) = 3
F(4) = 5
F(5) = 8
F(6) = 13, etc.
Seu objetivo é escrever um programa que recebe um inteiro N e calcula F(N). Escreva dois programas na linguagem C que resolvem este problema. O primeiro utilizando recursão e o segundo utilizando apenas estruturas de repetição (for, por exemplo).
Fibonacci Iterativo
#include<stdio.h>
int fib(int n) { int i; int a,c = 0; int b = 1; for(i = 0; i <= n; i++) { a = b; b = c;
c = a + b;
}
return c;
}
int main() { int num; scanf("%d", &num); printf("%d", fib(num)); return 0;
}
Fibonacci Recursivo
#include<stdio.h>
int fib(int a) { if(a <= 1) { return 1;
}
else { return fib(a - 1) + fib(a - 2);
}
} int main() { int num; scanf("%d", &num); printf("%d", fib(num)); return 0;
}
2) ) Uma permutação dos números de 1 a N é uma ordenação dos números de 1 a N. Por exemplo, (6 3
2 4 5 1) é uma permutação dos números de 1 a 6.
Escreva um programa na linguagem C, como visto em sala, que recebe um inteiro N e imprime todas as permutações dos números de 1 a N. Por exemplo, para um valor de entrada N=3, seu programa deve imprimir a sequência:
123
132
213
231
312
3 2 1.
#include<stdio.h>
void imprima(int v[], int tamanho) { int i; if(v != 0) { for(i = 0; i < tamanho; i++) { printf("%d ", v[i]);
}
printf("\n");
}
} void vizinho(int v[], int n, int k) { int i; static level = -1; level += 1; v[k] = level;
if(level == n) { imprima(v, n);
}
else { for(i = 0; i < n; i++) { if(v[i] == 0) { vizinho(v, n, i);
}
}
}
level -= 1; v[k] = 0;
}
void permutacao(int n) { int i; int v[n]; for(i = 0; i < n; i++) { v[i] = 0;
}
vizinho(v, n, 0);
}
int main() { int num; scanf("%d", &num); permutacao(num); return 0;
}