Analise o código abaixo:



Documentos relacionados
Curso C: Controle de Fluxo

José Romildo Malaquias

Estruturas de repetição (Ciclos)

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Recursão em C

Algoritmos de Busca em Tabelas

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Introdução à Programação. Recursão

INF 1620 P1-10/04/02 Questão 1 Nome:

Recursividade. Recursividade

Curso de C: uma breve introdução

Curso C: Funções e Macros

Tipo Abstrato de Dados

20 Caracteres - Tipo char

Estruturas de entrada e saída

Programação de Computadores II. Cap. 4 Funções

Linguagem C: agregados heterogêneos, arquivos binários, recursividade. Prof. Críston Algoritmos e Programação

INF 1620 P1-13/09/02 Questão 1 Nome:

Estrutura de Dados Básica

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

INF 1620 P1-11/04/03 Questão 1 Nome:

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s

Introdução à Programação Bacharelado em Sistemas de Informação 3ª Lista de Exercícios - Solução Procedimentos e Funções

Lista de Exercícios 04a Repetição. 5) Escreva um programa que imprima todos os números inteiros de 200 a 100 (em ordem decrescente).

Programação Estruturada

INF 1007 Programação II

MC102 Algoritmos e Programação de Computadores

ATENÇÃO!!! Rui Morgado - TLP 2

Prova de Recuperação

SSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves. ICMC/USP São Carlos

Apresentar os conceitos básicos e as estruturas de linguagem relacionadas à tomada de decisão ofertadas pela linguagem C, tais como:

INF 1005 Programação I

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

Recursividade. Prof. Jesus José de Oliveira Neto

Comandos Sequenciais if else, e Switch

Programação de Computadores II

Manipulação de processos

Módulo 3 Controle de Fluxo

Introdução a Computação

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

Aula 1 Tipo Abstrato de Dados

Estruturas (Registros)

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

Module Introduction. Programação. Cap. 4 Algoritmos e Programação Estruturada

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

I Semana de Software Livre da USP Dojo C

Introdução à Programação em C (I)

Vetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes

Computação Informática

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000

Escopo das Variáveis. Funções. Funções. Funções. Funções. Algoritmos e Lógica de Programação. Programação Estruturada Funções Recursividade

ESTRUTURA DE DADOS (TCC )

Linguagem C Funções definidas pelo usuário. Lógica de Programação

Programação: Estruturas de seleção

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++

Notações: in, pré e posfixada

Introdução à Programação em C (I)

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Introdução à Linguagem C

Computação e Programação Aula prática nº 5. Enunciados dos problemas

Tabela ASCII de caracteres de controle

Capítulo 2: Introdução à Linguagem C

GFM015 Introdução à Computação Linguagem C / Introdução à Modularização de Programas (uso de subprogramas)

Linguagem de Programação C

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS

5 Apresentando a linguagem C

Recursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul

Curso de Linguagem C

INF 1007 Programação II

Q1 Q2 Q3 Nota. Departamento de Informática - PUC-Rio INF 1005 Programação I P2 20/10/2010. Aluno: Exemplo (apenas um exemplo!):

Estruturas de Repetição

Convertendo Algoritmos para a Linguagem C

O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados

Estrutura Condicional C++

7. Estrutura de Decisão

Um Exemplo de Refatoração. Prof. Alberto Costa Neto DComp/UFS

14.1 Vetor - Problemas

UNIVERSIDADE FEDERAL DE SANTA MARIA

O comando if. O comando condicional permite incluir no programa trechos de código que dependem de uma ou mais condições para sua execução.

9 Comandos condicionais

Solucionário de. Programação

Recursividade. Aula 9

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Simulado de Linguagem de Programação Java

Fundamentos de Programação 1

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Introdução à Programação C

Comandos de Controle do Programa

struct LISTA item quant

Programação Estruturada I

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

Transcrição:

Recursão - introdução Analise o código abaixo: 1 # include <stdio h> 2 # include <string h> 3 int Fatorial ( int x) 4 int k, s =1; for (k =0;k<x;k ++) 6 7 s=s*(k+1) ; 8 9 return s; int main ( void ) printf (" Fat =%d\n",fatorial () ); (Programação estruturada) 1 / 1

Recursão - introdução Analise o código abaixo: 1 # include <stdio h> 2 # include <string h> 3 4 int ( int x) 6 if (x!=1) return x* (x -1) ; 7 return 1; // nao precisa de else 8 9 int main ( void ) printf (" =%d\n", ); (Programação estruturada) 2 / 1

Recursão Como funciona internamente? (Programação estruturada) 3 / 1

(Programação estruturada) 4 / 1

return (4*(3)) 23 4 (Programação estruturada) / 1

return (4*(3)) return (3*(2)) 3 4 (Programação estruturada) 6 / 1

(2) return (4*(3)) return (3*(2)) return (2*(1)) 23 (2) 2 3 4 (Programação estruturada) 7 / 1

(2) return (4*(3)) return (3*(2)) return (2*(1)) 23 1 (1) (2) 2 3 4 (1) return (1) (Programação estruturada) 8 / 1

(2) return (4*(3)) return (3*(2)) return (2*(1)) 23 1 (1) 1 (2) 2 3 4 (1) return (1) (Programação estruturada) 9 / 1

(2) return (4*(3)) return (3*(2)) return (2*(1)) 1 23 (2) 2 2 3 4 (Programação estruturada) / 1

return (4*(3)) return (3*(2)) 2 23 3 6 4 (Programação estruturada) / 1

return (4*(3)) 6 23 4 24 (Programação estruturada) / 1

23 24 1 (Programação estruturada) / 1

Outro exemplo de recursão Somatório dos N primeiros números Digamos que seja necessário criar uma função que retorne a soma dos N primeiros números inteiros Ou seja, se N=3 a soma será 6 visto que 1+2+3=6 Este algoritmo pode ser criado de forma iterativa: 1 int soma ( int N) 2 3 int x,s =0; 4 for (x =1;x <=N;x ++) S=S+x; 6 return S; 7 (Programação estruturada) / 1

Outro exemplo de recursão - continuação Somatório dos N primeiros números O algoritmo pode ser escrito na forma recursiva se percebermos que soma(3) = 3 + soma(2) 1 int soma ( int N) 2 3 if ( N ==1) return 1; 4 return N+ soma (N -1) ; (Programação estruturada) / 1

Mais um exemplo de recursão Imprimir um número inteiro dígito por dígito usando recursão Dica: escolha um número n e veja como o algoritmo se comporta 1 void printd ( int n) 2 if (n < 0) /* imprime sinal */ 3 putchar ( - ); 4 n = -n; 6 if ((n / )!= 0) printd (n /) ; /* recursao se n > */ 7 putchar (n % + 0 ); (Programação estruturada) / 1

Mais um exemplo de recursão Sequência de Fibonacci A sequência de fibonacci é uma sequência tal que o primeiro termo é 0, o segundo termo é 1 e os demais termos são dados pela soma dos dois últimos números 0, 1, 1, 2, 3,, 8,, 21, 34, ou ainda: fibonacci(0) = 0; fibonacci(1) = 1; fibonacci(n) = fibonacci(n 1) + fibonacci(n 2); 1 long fibonacci ( long n) 2 if ( n == 0 n == 1) return n; 3 return fibonacci ( n -1) + fibonacci ( n -2) ; 4 (Programação estruturada) / 1

Mais um exemplo de recursão Converter um número inteiro em string 1 void itoa_aux ( int num, char * &s) 2 if ( num == 0 ) return ; 3 itoa_aux ( int ( num / ), s); 4 *s++ = n % + 0 ; 6 void itoa ( int num, char *s) 7 if ( num < 0) // Se o valor for negativo 8 *s++ = - ; 9 n = -n; itoa_ aux ( num, s ); * s = 0; // Terminar a String ) (Programação estruturada) / 1