
























Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Este documento contém uma aula sobre recursão e passagem de parâmetros em c++, incluindo exemplos de código e explicações sobre a passagem por valor e por referência. Além disso, é apresentado o conceito de sobrecarga de funções e gabaritos de funções.
Tipologia: Notas de aula
1 / 32
Esta página não é visível na pré-visualização
Não perca as partes importantes!

























Aula nº 11
Recursão (continuação)
Referência
Sobrecarga de funções
Gabarito de funções
recursiva da função fatorial deve-
se observar o relacionamento:
n! = n. (n-1)!
...
int fat (int)
int main( ) {
int x=5;
cout<<x <<“! = ”<<fat(x)<<endl;
return 0;
}
int fat (int n) {
if (n <= 1)
return 1;
else
return n * fat (n – 1);
}
n! = n * (n-1)!
x
int fat (int n) {
if (n <= 1)
return 1;
else
return n *
Em execução:
int fat (int)
int main( ) {
int x=5;
x 5
int fat (int n) {
if (n <= 1)
return 1;
else
return n *
cout<<x<<“! = ”<< fat(x) << endl;
fat (n – 1);
n 5
n 4
int fat (int)
int main( ) {
int x=5;
cout<<x<<“! = ”<<
n 3
n 2
n 1
int fat (int n) {
if (n <= 1)
return 1;
fat(x)
Em execução:
int fat (int)
int main( ) {
int x=5;
x 5
int fat (int n) {
if (n <= 1)
return 1;
else
return n *
cout<<x<<“! = ”<< fat(x)<< endl;
fat (n – 1);
n 5
n 4
int fat (int)
int main( ) {
int x=5;
cout<<x<<“! = ”<<
n 3
n 2 3 2 2
Em execução:
int fat (int)
int main( ) {
int x=5;
x 5
int fat (int n) {
if (n <= 1)
return 1;
else
return n *
cout<<x<<“! = ”<< fat(x)<< endl;
fat (n – 1);
n 5
n 4
int fat (int)
int main( ) {
int x=5;
cout<<x<<“! = ”<<
n 3
Em execução:
int fat (int)
int main( ) {
int x=5;
x 5
int fat (int n) {
if (n <= 1)
return 1;
else
return n *
cout<<x<<“! = ”<< fat(x)<< endl;
fat (n – 1);
n 5
int fat (int)
int main( ) {
int x=5;
cout<<x<<“! = ”<<
variável da função chamadora;
overhead de criar uma cópia;
é um alias do seu correspondente.
14/10/2008 Aula 11 - Funções (4) 13 - 32
int main( ) {
int x = 2, z = 4;
cout << "x = " << x <<“antes de quadValor\n”;
cout<< "Valor retornado por quadValor:”
<< quadValor( x ) << endl ;
cout << "x = “ << x << " depois de quadValor\n“ ;
cout << "z = " << z << " antes de quadRef\n“;
quadRef ( z );
cout << "z = " << z << " depois de quadRef\n";
return 0;
}
int main( ) {
int x = 2, z = 4;
cout << "x = " << x <<“antes de quadValor\n”;
cout<< "Valor retornado por quadValor:”
<< quadValor( x ) << endl ;
cout << "x = “ << x << " depois de quadValor\n“ ;
// argumento da chamadora não é modificado
int quadValor( int a ) {
return (a =a*a);
} x 2
z 4
x 2
z 4
a 2
x 2
z 4
a 4
quadValor( x )
x = 2 antes de quadValor
Valor retornado por quadValor: 4;
x = 2 depois de quadValor
usadas como alíases para outras
variáveis dentro de uma função
#include
using namespace std;
int main()
{
int x = 3, &y = x; // y é agora um alias para x
cout << "x = " << x << endl << "y = " << y << endl;
x = 10;
cout << "x = " << x << endl << "y = " << y << endl;
return 0;
}
x = 3
y = 3
x = 10
y = 10
Pressione qualquer tecla para continuar...
Uma referência deve
ser inicializada
cout << “\nvolume de uma caixa com
comprimento 10 , largura 5 e altura 1
= ”<< volumeCaixa( 10 , 5 );
cout << “\nvolume de uma caixa com
comprimento 10 , largura 5 e altura 2
= ” << volumeCaixa( 10 , 5 , 2 );
return 0;
int volumeCaixa( int comp=1; int larg=1; int altura=1)
return comp * larg * altura;