Executando verificação de segurança...
1

Opa, Lucas! Tudo bem? Primeiramente queria dizer que adorei teu post e queria te parabenizar por essas 3 linguagens, tu certamente é um programador diferenciado.

Mas analisando esse problema de diferença entre o resultado de Runa, JavaScript e Python, acredito que eu saiba qual é o problema:

Seu fibonacci(80) na verdade é um fibonacci(79) pelo que percebi (mas isso não tem nenhum problema, só depende se você considera ou não o primeiro número na implementação).

O fibonacci(79) resulta em 4472334024676221, ou seja, o Python tá certo.

Talvez o fato de que JavaScript e Runa apresentarem o mesmo resultado seja a maneira de como eles lidam com números.

No JavaScript, quando você define um valor numérico (mesmo se for inteiro) ele é um "Number", que na prática é um float64/double e quando esse valor cresce demais você não consegue mais trabalhar com ele e precisa trabalhar com BigInt.

Usando declarações de número com sufixo "n" ele entende que eles são BigInt. Ex.: const num = 88n

Já o Python funciona de uma maneira diferente. Quando tu define um número inteiro no Python ele usa uma lógica de "big integers" automática, sempre que o valor cresce ele aumenta a capacidade sozinho.

Talvez Python tenha abordado dessa forma porque a linguagem tem um foco na simplicidade e na ergonomia.

Olhando para os resultados, talvez a tua linguagem implemente isso de uma maneira semelhante ao JavaScript.

Era apenas isso. Novamente, adorei seu post e te desejo sucesso na área!

Carregando publicação patrocinada...