ВНИМАНИЕ! На форуме начался конкурс - астрофотография месяца ОКТЯБРЬ!
0 Пользователей и 1 Гость просматривают эту тему.
fi1 := 1;fi2 := 2;for i := 1 to 50 do begin fib := fi1 + fi2; fi1 := fi2; fi2 := fib;endWriteLn(fib)
Напишите так
function FiboBinet(n:Integer):Extended;const PHI = 1.61803398874989;begin FiboBinet:=(IntPower(PHI,n)-1/IntPower(-PHI,n))/(2*PHI-1);end;
числа Фиббоначи до 10000
Программа в современном питоне вполне может выполняться быстрее чем на С++)
#include <stdio.h>#include <time.h>double Fibo(int n){ if (n==0) return 0; else if (n==1) return 1; else return Fibo(n-1) + Fibo(n-2);}int main(int argc, char **argv){ double a; int n; clock_t start, end; for (n = 33; n < 47; n++) { start = clock(); a = Fibo(n); end = clock(); printf("%f\n",(double)(end - start) / (CLOCKS_PER_SEC)); } getchar(); return 0;}
Когда меня учили считать на калькуляторе, то для оптимизации, например, предлагали вместо квадрата считать произведение числа на самого себя и куб то же заменять явным произведением, это звучит смешно, но функции на калькуляторе считаются через разложение в ряды, то бишь считается n-колличество членов ряда и находится их сумма, что приводит к большим временным затратам.
program perfSq;uses SysUtils,DateUtils,Math;var i,N:Longint; // Integer у Geany маловат t0:TDateTime; x,f:Extended;begin N:=1000000000; t0:=Now; for i:=1 to N do begin x:=i; // Чтобы умножались не целые, а действ.. Хотя для Pascal это наверное не надо // f:=x*x*x; f:=IntPower(x,3); end; WriteLn((Now-t0)*86400/N); // время на 1 цикл, сек ReadLn;end.
Если у кого есть желание изучить Паскаль, присоединяйтесь!
выбирал между Java и Python, начал с первого, в итоге остановился на последнем, т.к. в Java очень долгий срок вхождения, в Python гораздо быстрее можно получить готовый продукт да и для программирования в одиночку он больше приспособлен. По возможностям оба языка - на порядки круче Паскаля, у меня получалось реализовать любые свои желания.
насколько надо изучить Паскаль, прежде чем переходить к Дельфи
А какие возможности у Python?
Кстати RegiStax тоже дельфийский продукт.
program untitled;var i,n : LongInt; x:Double;begin i:=1000000000; n:=1000000000; WriteLn('i= ',i,' n= ',n); x:=i*n; WriteLn(x); x:=i*n*1.0; WriteLn(x); x:=1.0*i*n; WriteLn(x); ReadLn; end.
Ни одна из распространённых коммерческих реализаций Паскаля не соответствует в точности ни одному из официальных стандартов языка.
Зачем использовать такой короткий тип данных как LongInt (который по факту тот же 4х-байтный знаковый Integer) если планируется умножение огромных чисел.