Factorial

Problema
Calcular o factorial dun número N sen recursividade.

 

Análise
  • Dado N, o factorial é multiplicar dende N ata 1.
  • Por definición, 0! = 1.
  • Non existe o factorial dun N negativo.
Algoritmo
  • Bucle namentres (repetir en Scratch), condicional simple.
  • Variables: unha contador, outra para  gardar o valor máximo.

Solución proposta sen recursividade (lembra, non é única):

Diagrama de fluxo (Pseint) Scratch

diagrama

Pseudocódigo (Pseint) Python 3

pseudo

python

Exercicio:

  1. Facer que o algoritmo represente os cálculos intermedios

Vale, e agora imos facelo con recursividade, para ver que é máis compacto:

 

Diagrama de fluxo (Pseint) Scratch

 

Pseudocódigo (Pseint) Python 3

pseudo

python

Agora deberías escribir o código de Python e executalo.

Tamén deberías executalo secuencialmente por que ao mellor non é tan sinxelo como parece. A pregunta que pode xurdir é: onde se acumula a multiplicación se non hai unha variable que faga (é decir, se 4! = 4·3! onde está gardado o 4 antes de facer o proceso recursivo para calcular 3!?). Para axudar a comprender isto podemos visualizar os pasos secuenciais:

1. factorial(5)
2. 5 * factorial(4)
3. 5 * 4 * factorial(3)
4. 5 * 4 * 3 * factorial(2)
5. 5 * 4 * 3 * 2 * factorial(1)
6.                                   returns 1
7                    returns 2 * 1 = 2
8.                 returns 3 * 2 = 6
9.             returns 4 * 6 = 24
10.    returns 5 * 24 = 120

Exercicio:

  1. Falta a proposito o condicional de erro para cando o nº sexa negativo. Modifica o programa para que inclúa esta condición.

Factorial Serie de Fibonacci Iteras ou recurres