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 и вполне вероятно что-то упустил.
                  
                  
                
потому что в питоне длинная арифметика
Обсуждают сегодня