Guide for Bitlles (1)


Això és una guia per ajudar-te a començar amb aquest problema — no és la solució.
Mostra el codi per a: Consideracions generals Java 11 Python 3

Com abordar aquest problema

Cada fila del triangle de bitlles té tantes bitlles com el número de la fila (fila 1 té 1 bitlla, \ fila 2 en té 2, etc). Has de dir quantes bitlles calen en total per a n files, però resolent-ho \ amb recursivitat, tal com demana l'enunciat.

Idea general:

  1. Pensa el problema en termes del cas anterior: si ja saps quantes bitlles calen per a n-1 \ files, quantes en calen per a n files? (Quantes bitlles té, ella sola, la fila número n?)
  2. Defineix el cas base: quantes bitlles calen quan no hi ha cap fila?
  3. Escriu una funció recursiva que es cridi a si mateixa amb un valor més petit, i sumi el que \ calgui segons el raonament del pas 1.
  4. Per cada cas de prova, crida la funció amb el n donat i mostra el resultat.

Paranys habituals:

  • Amb n=1000 el total de bitlles és un número gran: fes servir un tipus de dades que admeti \ nombres grans (per exemple long en Java; en Python els enters no tenen aquest límit).
  • Assegura't que la recursivitat té un cas base clar; si no, el programa no acabarà mai.
  • Compte amb la profunditat de la recursivitat si n és gran: alguns llenguatges tenen un límit \ de crides recursives per defecte que potser cal ampliar.

Pista per a Python

Defineix una funció recursiva amb un cas base i un cas general que faci una crida amb n-1:

import sys
sys.setrecursionlimit(10000)

def bitlles(n):
    # cas base: quantes bitlles calen si no hi ha cap fila?
    if n == 0:
        return 0
    # cas general: bitlles(n) en funcio de bitlles(n-1) i de la fila n
    return bitlles(n - 1) + n

casos = int(input())
for _ in range(casos):
    n = int(input())
    print(bitlles(n))

Tornar al problema