Люблю я кодить

May 18, 2012 11:19

Меня тут попросили сделать лабораторку по сям по теме «разложение числа в сумму чисел Фибоначчи», ну а я решил расслабить разум на работе и написал бета-версию на перле =)
#!/usr/bin/perl use strict; use POSIX;   sub round { return int($_[0]+.5); }   sub Fib{ round((((1+sqrt(5))/2)**$_[0])/sqrt(5)); }   my $value = $ARGV[0]; my $begin = 0; my $end = 20; my $tmp; my $sum = 0; $|=1; $end+=10 while (Fib($end)<$value); while (!((&Fib($begin)<$value)&&(&Fib($end)>$value)&&($end-$begin==1))){ $tmp = ceil (($begin + $end) / 2); if (&Fib($tmp) > $value){ $end = $tmp; } else { $begin = $tmp; } die "Alredy Fibonacci number =)n" if ((&Fib($begin)==$value) || (&Fib($end)==$value)) ; } print "$value = "; $tmp=$begin; while ($sum != $value){ if (&Fib($tmp)+$sum<=$value){ print " + " unless ($tmp == $begin); $sum += &Fib($tmp); print &Fib($tmp); } $tmp--; die if $tmp == 0; } print "n";

меткаобозначающаяотсутствиеметки, Технократия

Previous post Next post
Up