280571172992510140037611932413038677189525

 Какие только идеи не придут в голову вечером. Вчера это была идея посчитать числа Фибоначчи. Гугл вывалил массу алгоритмов подсчета и часть жалоб на ошибки при вычислении БОЛЬШИХ чисел. Некоторые языки использовали экзотические типы переменных, но это не наши методы. После пары проб и ошибок получилась программа, которая пишет в файл значения чисел. Беглая сверка показала, что подсчет совпадает с таблицами.

;f(200)=280571172992510140037611932413038677189525
Procedure.l max(a,b)
  m=a
  If b>a
    m=b
  EndIf
  ProcedureReturn m
EndProcedure
w1.s="1"
w2.s="1"
CreateFile(0,"fibo.txt")
WriteStringN(0,"1")
WriteStringN(0,"1")
For k=3 To 200
  r$=""
  m=0
  l=max(Len(w1),Len(w2))
  
  For i=1 To l
    If i<=Len(w1)
      d1=Val(Mid(w1,i,1))
    Else
      d1=0
    EndIf
    
    If i<=Len(w2)
      d2=Val(Mid(w2,i,1))
    Else
      d2=0
    EndIf
    
    n=(d1+d2+m)%10
    r$=Str(n)+r$
    m=Int((d1+d2+m)/10)
  Next i
  If m
    r$=Str(m)+r$
  EndIf
  w1=w2
  w2=ReverseString(r$)
  Debug r$
  WriteStringN(0,r$)
Next k
CloseFile(0)

Дополнение 02-12-23 Версия для ZX

Комментарии