Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
static int fib(int n)
{
int[] f = new int[3];
f[1] = 1;
for (int i = 2; i <= n; i++)
{
f[i%3] = f[(i + 1)%3] + f[(i + 2)%3];
}
return f[n%3];
}
* This source code was highlighted with Source Code Highlighter.static int fib(int n)
{
int[] f = new int[2];
f[0] = f[1] = 1;
for (int i = 2; i <= n; i++)
f[i & 1] += f[!(i & 1)];
return f[!(n & 1)];
}
* This source code was highlighted with Source Code Highlighter.static int fib(int n)
{
return n > 1 ? fib(n - 1) + fib(n - 2) : n;
}sub fibo_simple($) {
my @list = (1,1);
push @list, $list[-1]+$list[-2] for(3..$_[0]);
@list;
}
use constant { SQRT5 => sqrt(5), PHI => (sqrt(5)+1)/2 };
sub fibo_binet($) {
map {int(PHI**$_/SQRT5+.5)} 1..$_[0];
}
use Test::More tests => 1;
is_deeply([fibo_simple(60)],[fibo_binet(60)],
"Первые 60 чисел — по определению и по формуле Бине");Кстати, 60-е число сильно за пределами 2^32. Извините за перл, но вы легко проведёте тест на своём любимом языке.D:\>perl fibo_test.pl 1..1 ok 1 - Первые 60 чисел — по определению и по формуле Бине
public static mtx2x2 IntPower(mtx2x2 x, short power)
{
if (power < 2) return x;
Числа Фибоначчи (этюд на C#)