#include <stdio.h>
#include <stdlib.h>
if ( ( n > 1 ) && !( n % 2 ) )
return n + somapar(n - 1);
if ( ( n > 1 ) && ( n % 2 ) )
return somapar(n - 1);
return 0;
}
int main(void)
{
int n;
printf("Informe um valor:");
scanf("%d", &n);
return 0;
//val min
int minvet(int v[], int ini, int len)
{
int min;
//val max
int maxvet(int v[], int ini, int len)
{
int max;
if(ini >= len-2)
{
if(v[ini] > v[ini + 1])
return v[ini];
else
return v[ini + 1];
}
//média
float media(int v[], int s)
{
if (s == 1)
//inverte
void imprimirinverso(int v[],int k)
{
int z;
if (k>0)
{
z= k-1;
printf("%d ",v[z]);
imprimirinverso(v,z);
}
return;
}
//
int main(){
int v[TAM];
int N, i, somav, max,min,minvet, maxvet, op;
float med = 0;
float media;
scanf("%d", &op);
switch(op) {
case 1:
somav = soma(v, 0, N);
printf("Sum of array elements: %d", somav);
break;
case 2:
min = minvet(v, 0, TAM);
printf("Maximum element in array: %d\n", min);
break;
case 3:
max = maxvet(v, 0, TAM);
printf("Maximum element in array: %d\n", max);
break;
case 4:
printf("%.2f\n", media(v, s));
break;
case 5:
imprimirinverso(v,N);
break;
}
}while(op!=6);
}
8) Escreva uma função recursiva para retornar o tamanho de uma string (não é para
usar a
função strlen()). Escreva também a chamada da função.
#include <stdio.h>
#include <stdlib.h>
if (s[0] == '\0')
return 0;
return 1+tamstring(&s[1]); }
int main(void){
char s[20];
int t;
return 0;
}
12) Escreva uma função recursiva que recebe um número n e retorne a soma dos
dígitos do
número.
#include <stdio.h>
int main()
{
int n;
printf("Informe um número: ");
return 0;
}
13) Escreva uma função recursiva recebe um número inteiro n > 0, conta e retorna o
número de
dígitos pares do número.
#include <stdio.h>
int main(){
int n;
printf("Informe um número: ");
scanf("%d", &n);
printf("\nA soma dos digitos é %d", Pares(n));
return 0;
14) Escreva uma função recursiva que calcule e retorne a soma dos elementos
positivos do
vetor de inteiros.
#include <stdio.h>
#define TAM 100
int main()
{
int v[TAM];
int n, i, somav;
return 0;
}
20) Escreva uma função recursiva para contar o número de caracteres maiúsculos
que a string
possui.
#include<stdio.h>
#include<string.h>
int main(){
char str[30];
printf("Informe sua string:");
scanf("%[^\n]",str);
int letrasm=maiusculo(str,strlen(str)-1);
if(letrasm==0)
printf("Não tem letras maiúsculas.");
else
printf("O número de letras maiúsculas é:%d",letrasm);
}
#include<stdio.h>
int main()
{
int num, primo;
printf("Informe um número: ");
scanf("%d", &num);
primo = ePrimo(num, num/2);
if(primo == 1)
{
printf("\n\n%d é primo.\n\n", num);
}
else
{
printf("\n\n%d não é primo.\n\n", num);
}
return 0;
}
T (1) = 1
T (n) = 1 + T (n − 1)
T (n) = k − T (n − k)
T (n) = n − 1 − T (n − (n − 1))
T (n) = n − 1 − T (1)
T (n) = n − 1 + 1
A complexidade é O(n)
return 0;
}
26) Faça uma função recursiva que retorne a quantidade de nós de uma árvore
binária de busca
que possuem apenas um filho.
int conta_pais(No* t) {
if (t == NULL ||
(t->esq == NULL && t->dir == NULL)
31) Escreva um programa para manipular Árvore Binária de Busca (ABB) com n
(lido via
teclado) números inteiros que contenha o seguinte menu de opções:
1- Inserir um nó na ABB
2- Imprimir a ABB
I- Inoder
P- Preorder
O- Postorder
S- Sair
3- Buscar uma chave na ABB
4- Mostrar a altura da ABB
5- Mostrar a quantidade de nós da ABB
6- Mostrar a quantidade de folhas da ABB
7- Mostrar a quantidade de pais da ABB
8- Mostrar a maior chave da ABB
9- Mostrar a menor chave da ABB
10- Remover um nó da ABB
11- Sair
Para as opções 1 a 9 crie uma função recursiva para resolver cada item.
Na opção 10, crie uma função não recursiva. Mostre a árvore resultante após a
remoção do
nó.
Na opção 2, mostre o menu com as opções de caminhamentos para o usuário.
Na opção 11, mostre uma mensagem. O menu acaba quando o usuário escolher a
opção 11.
#include <stdio.h>
#include <stdlib.h>
struct tree{
struct tree *esq;
int chave;
struct tree *dir;
};
//inserir nó
struct tree *insereABB(struct tree *raiz, int valor){
if (raiz==NULL) {
//imprimir abb
//Inorder
void inorder(struct tree *raiz){
if(raiz != NULL)
{
inorder(raiz -> esq);
printf(“%d \t”, raiz -> chave);
//Preorder
void preorder(struct tree *raiz){
if(raiz != NULL){
printf(“%d \t”, raiz -> chave);
preorder(raiz -> esq);
preorder(raiz -> dir);
}
}
//Postorder
void postorder(struct tree *raiz){
if(raiz != NULL){
//altura
int altura(struct tree *raiz){
int e, d;
//quantidade de ní
int contaNos(struct tree *raiz){
if(!raiz)
return 0;
return (1+contaNos(raiz->esq)+contaNos(raiz->dir));
}
//quantidade de folha
int contaFolhas(struct tree *raiz){
if(!raiz)
return 0;
if(!raiz->esq && !raiz->dir)
return 1;
return (contaFolhas(raiz->esq) + contaFolhas(raiz->dir);
}
//quantidade de pais
int conta_pais(No* t) {
if (t == NULL ||
(t->esq == NULL && t->dir == NULL)
return 0;
return 1 + conta_pais(t->esq) + conta_pais(t->dir);
}
//mairo chave
//menor chave
//remover nó
void removeABB(struct tree *raiz, int x){
struct tree *p, *q, *rp, *f, *s;
q=NULL;
p=raiz;
while(p && x!=p -> chave){
q=p;
p=(x<p->chave) ? P -> esq : p->dir;
}
if(!p)
return;
if(!p->esq)
rp=p->dir;
else{
if(!p->dir)
rp=p->esq;
else{
f=p;
rp=p->dir;
s=rp->esq;
while(s){
int main(){
int N, i, op, op2;
do{
printf("\n 1-Inserir um nó na ABB\n 2-Imprimir a ABB\n 3-Buscar uma chave na ABB\n
4- Mostrar a altura da ABB\n 5- Mostrar a quantidade de nós da ABB\n 6- Mostrar a qua
ntidade de folhas da ABB\n 7- Mostrar a quantidade de pais da ABB\n 8- Mostrar a maior
chave da ABB\n 9- Mostrar a menor chave da ABB\n 10- Remover um nó da ABB\n 11-Sair\n
Digite uma das opções: ");
scanf("%d", &op);
switch(op) {
case 1:
printf("Insira o valor: ");
scanf("%d", &v);
insereABB(v);
break;
case 2:
do{
printf("\n I- Inoder\n P- Preorder\n O- Postorder\n S- Sair \n Digite
uma das opções: ");
scanf("%d", &op2);
switch(op2) {
case 1:
inorder();
break;
case 2:
preorder();
break;
case 3:
postorder();
break;
case 4:
printf("Finalizar!! \n");
break;
}while(op2!=4);
break;
case 3:
}
}while(op!=11);
}
43) Escreva uma função recursiva que retorna o número de nós numa árvore binária
cujos
valores das chaves são múltiplos de três.
struct tree{
struct tree *esq;
int chave;
struct tree *dir;
};