Escolar Documentos
Profissional Documentos
Cultura Documentos
, de forma
recursiva, retornando um inteiro como resultado. Utilize o seguinte prottipo: int
divisao(int,int);
#include <stdio.h>
#include <stdlib.h>
int divisao(int a, int b)
{
int c;
if (a<b)
{
c=0;
}
else if (b==0)
{
printf("Divisao impossivel (retorna erro) \n");
}
else
{
c=1+divisao(a-b,b);
}
return c;
}
int main()
{
int a, b;
printf("Digite um valor para a: ");
scanf("%d", &a);
printf("Digite um valor para ser b: ");
scanf("%d", &b);
printf("%d / %d = %d", a, b, divisao(a,b));
return 0;
}
6. Escreva uma funo recursiva que retorne um inteiro representando o resto da
diviso de dois inteiros
, ou seja, o
piso do logaritmo de n na base 2. Utilize o seguinte prottipo: int log2(int);
#include <stdio.h>
#include <stdlib.h>
int log2(int a)
{
if (a==1)
return 0;
return (1 + log2(a/2));
}
int main()
{
int n;
printf("Digite uma valor para calcular o logaritimo na base 2: ");
scanf("%d", &n);
printf("O log de %d na base 2 e: %d", n, log2(n));
return 0;
}
14. Escreva uma funo recursiva que faa a busca sequencial em um vetor. A funo
deve receber um vetor inteiro, um inteiro representando o ndice do ltimo
elemento desse vetor e um inteiro correspondente ao valor que deve ser localizado
no vetor. Se o elemento for encontrado a funo retorna 1, seno retorna 0. Utilize o
seguinte prottipo: int busca_sequencial (int [], int, int);
#include <stdio.h>
#include <stdlib.h>
int busca_sequencial(int a[],int b,int c)
{
if (b==0)
return 0;
else
{
if (a[b-1]==c)
return 1;
else busca_sequencial(a,b-1,c);
}
}
int main()
{
int a[]={2,6,7,10,26,36,38,58};
int b=8;
int c=26;
printf("%d", busca_sequencial(a,b,c));
return 0;
}
15. Escreva uma funo recursiva que faa a busca binria em um vetor. A funo deve
receber um vetor inteiro, um inteiro representando o ndice do ltimo elemento
desse vetor e um inteiro correspondente ao valor que deve ser localizado no vetor.
Se o elemento for encontrado a funo retorna 1, seno retorna 0. Utilize o seguinte
prottipo: int busca sequencial (int [], int, int);
#include <stdio.h>
#include <stdlib.h>
int busca_binario(int v[], int x, int n)
{
if (n<=0)
return 0;
else
{
int meio = n/2;
if (x<v[meio])
return busca_binario(v,x, meio);
else if (x>v[meio])
{
return busca_binario(&v[meio+1],x,n-1-meio);
}
else
return 1;
}
}
int main ()
{
int v[]={1,5,6,8,9};
int n=5;
int x;
printf("Digite um numero na sequencia {1,5,6,8,9}: ");
scanf("%d", &x);
printf("%d", busca_binario(v, x, n));
return 0;
}
---------
Com 4 variveis
int busca_binaria(int a[],int b,int c,int d)
{ if (c < b) return 0;
//int m= (b + c)/2;
if (d < a[((b + c)/2)])
return busca_binaria(a, b, ((b + c)/2)-1, d);
else if (d > a[((b + c)/2)])
return busca_binaria(a, ((b + c)/2)+1, c, d);
else if (d == a[((b + c)/2)]) return 1;
}
16. Escreva uma funo recursiva que ordene um vetor inteiro de forma no decrescente
utilizando o algoritmo quicksort. A funo deve receber um vetor inteiro, um inteiro
representando o ndice do primeiro elemento desse vetor e um inteiro
representando o ndice de seu ltimo elemento. A funo deve modificar o vetor
recebido, e portanto no ser necessrio retornar nenhum valor. Utilize o seguinte
prottipo: void quicksort(int [], int, int);
#include <stdio.h>
#include <stdlib.h>
void quicksort( int a[], int b, int c)
{
int x; // 1
if (b < c)
{ // 2
c = separa( a, b, c); // 3
quicksort( a, b, x-1); // 4
quicksort( a, x+1, c); // 5
}
}
17. Escreva uma funo recursiva para calcular (
), dado que (
) (
)
(
), (
) e (