python и go.
python:
def fib(n: int):
fibs = {0: 0, 1: 1}
if n >= 0:
for i in range(n + 1):
if i not in fibs:
fibs[i] = fibs[(i - 1)] + fibs[(i - 2)]
return fibs[n]
print(fib(200)) # 280571172992510140037611932413038677189525
go:
package main
import "fmt"
func fib(n uint64) uint64 {
nums := map[uint64]uint64{0: 0, 1: 1}
if n >= 0 {
var bigI uint64
for bigI = 0; bigI < n + 1; bigI++ {
if _, ok := nums[bigI]; !ok {
nums[bigI] = nums[bigI - 1] + nums[bigI - 2]
}
}
}
return nums[n]
}
func main() {
fmt.Print(fib(200)) // 17323038258947941269
}
Собтсвенно вопрос в том, почему возвращаются разные результаты? Я так сказать новичок в go и вполне вероятно что-то упустил.
потому что в питоне длинная арифметика
Обсуждают сегодня