CGI/Perl Guide | Learning Center | Forums | Advertise | Login
Site Search: in

  Main Index MAIN
Search Posts SEARCH
Who's Online WHO'S
Log in LOG

Home: Fun With Perl: Perl Quizzes - Learn Perl the Fun Way:



Dec 15, 2000, 1:43 PM

Post #1 of 3 (32835 views)
Fibonacci Can't Post

Sure, we all know the fibonacci set (1, 1, 2, 3, 5, 8, 13, 21, ...), and we all know the general equations: F[1] = F[2] = 1, and F[n] = F[n-1] + F[n-2].

And we could probably generate these numbers easily in Perl:

my @fib = (1,1);
# generate the Nth fibonacci number
sub fibonacci {
my $n = shift() - 1;
unless ($fib[$n]) {
my $m = $n;
$m-- while not $fib[$m];
$fib[$m+1] = $fib[$m] + $fib[$m-1], $m++ while $m <= $n;
return $fib[$n];

There's your fibonacci code. So what is it this quiz is all about?

I am here to tax your mathematical prowess. Notice that 1+1+2 is 4, which 5-1. Notice that 1+1+2+3 is 7, which is 8-1. And 1+1+2+3+5 is 12, which is 13-1. So what do 5, 8, and 13 have in common? They're also three numbers in the sequence. 1+1+2 is 5-1, and 5 is the 2nd number after 2. 1+1+2+3 is 8-1, and 8 is the 2nd number after 3. 1+1+2+3+5 is 13-1, and 13 is the 2nd number after 5. Do you see the pattern?

So I'd like any able mathematicians out there to develop a proof, which states that F[1] + F[2] + ... + F[k] = F[k+2] - 1 for all k > 0.

(So maybe this isn't a Perl quiz, but this problem is directly related to a specific anomoly in Huffman encoding, which is a simple means of compressing files. It turns out that Huffman coding is very inefficient for files whose character frequencies are the Fibonacci sequence.)

(If that last paragraph made no sense, nevermind. Just try the proof. It's fun.)

Jeff "japhy" Pinyan -- accomplished hacker, teacher, lecturer, and author


Dec 19, 2000, 6:59 AM

Post #2 of 3 (32822 views)
Re: Fibonacci [In reply to] Can't Post

A bit of induction action:

Suppose F[1]+F[2]+...+F[k] = F[k+2]-1 for some k>0. We can safely assume this since at least for k=1,1+1+2=4=5-1.

We want to show that F[1]+F[2]+...+F[k]+F[k+1] = F[k+3]-1 ie. that the formula still holds.
But, F[k+3]-1=F[k+2]+F[k+1]-1 from the definition of Fibonacci numbers.
So, F[1]+F[2]+...+F[k]+F[k+1]=F[k+3]-1
becomes F[1]+F[2]+...+F[k]+F[k+1]=F[k+1]+F[k+2]-1
which reduces to F[1]+F[2]+...+F[k]=F[k+2]-1 which by our assumption is true.

So since the truth of the statement for F[k] implies the truth of the statement for F[k+1] and the statement is true for F[1], by mathemagical induction, the statement must be true for all k>0.


Dec 19, 2000, 7:18 AM

Post #3 of 3 (32821 views)
Re: Fibonacci [In reply to] Can't Post

Nice first post, jas! Well done, too.

(Inside tip, re: your web site: coup d'&eacute;tat.)

Jeff "japhy" Pinyan -- accomplished hacker, teacher, lecturer, and author


Search for (options) Powered by Gossamer Forum v.1.2.0

Web Applications & Managed Hosting Powered by Gossamer Threads
Visit our Mailing List Archives