Carregando...

Uma função que chama a si mesma

O nome down está dentro de down, e cada passo passa um número uma unidade menor. Por isso down(3) escreve 3, depois 2, depois 1.

A linha if n == 0: return é a paragem. Quando n é 0, essa linha corre e down não volta a ser usado. Sem ela, os passos não acabam e o programa não chega ao fim. Essa forma partida não está em baixo.

3, depois 2, depois 1

python
def down(n):
    if n == 0:
        return
    print(n)
    down(n - 1)

down(3)

O ecrã mostra 3, depois 2, depois 1. print corre antes do down seguinte. down(1) escreve 1 e depois chega a down(0). down(0) cai na paragem, não escreve nada, e o programa acaba.

Ponha print na linha a seguir a down(n - 1). Os números menores saem primeiro, porque cada passo espera que o de dentro tenha acabado.

1, depois 2, depois 3

python
def down(n):
    if n == 0:
        return
    down(n - 1)
    print(n)

down(3)

O ecrã mostra 1, depois 2, depois 3. down(0) continua sem escrever nada. Os print correm na volta, por isso 1 é escrito antes de 2, e 2 antes de 3.

down(0) sozinho nunca chega ao print. A paragem corre logo.

down(0) não escreve nada

python
def down(n):
    if n == 0:
        return
    print(n)
    down(n - 1)

down(0)

O ecrã fica vazio e o programa acaba. n já é 0, por isso print e o down seguinte são saltados.

Ler mal os ecrãs

O segundo programa não é 3, depois 2, depois 1. Essa ordem é do primeiro, onde print está à frente. Tire if n == 0: return de qualquer um e os passos não acabam. Não corra essa versão.

A página seguinte é uma lista de valores. Aqui só se vê uma função que usa o próprio nome, e a linha que a para no 0.

Siga os números

  1. O que escreve o primeiro programa, primeiro e depois?
  2. O que escreve o segundo programa, primeiro e depois?
  3. O que escreve o terceiro programa?
  4. Tira a paragem no 0. O programa chega ao fim?

O que down faz

O nome down dentro de down, com n - 1, desce de 3 até 1. print antes desse passo escreve 3, depois 2, depois 1. print depois escreve 1, depois 2, depois 3. if n == 0: return é a razão de o programa acabar. down(0) não escreve nada.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
5
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo