Fibonacci
-----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Nordlund, Dan (DSHS/RDA) Sent: Thursday, April 21, 2011 9:19 AM To: r-help at r-project.org Subject: Re: [R] Fibonacci
-----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- project.org] On Behalf Of David Winsemius Sent: Thursday, April 21, 2011 8:44 AM To: Michael Dewey Cc: r-help at r-project.org Subject: Re: [R] Fibonacci On Apr 21, 2011, at 9:04 AM, Michael Dewey wrote:
At 10:42 20/04/2011, Georgina Imberger wrote:
Hi! I am trying to work out the code to get a Fibonacci
sequence, using
the while() loop and only one variable. And I can't figure it out.
phi <- 0.5 * (1 + sqrt(5)) phi
[1] 1.618034
fib <- function(n) {(phi ^ n - (1 - phi) ^ n) / sqrt(5)}
fib(1:10)
[1] 1 1 2 3 5 8 13 21 34 55
Admittedly this does not use a while loop as you requested
I like it!
> test <-c( 1, 1, 2, 3, 5, 8, 13, 21, 34, 55) > test == fib(1:10)
[1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE To avoid such FAQ-tual puzzlement, it might be better to
round to zero
digits:
fib2 <- function(n) {round( (phi ^ n - (1 - phi) ^ n) / sqrt(5) ) }
> test == fib2(1:10)
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
If you are going to round anyway, you can save time and
add puzzlement by leaving out the (1-phi)^n term:
> fib3 <- function(n) {round( (phi ^ n) / sqrt(5) ) }
> all(fib2(0:100) == fib3(0:100))
[1] TRUE
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
There are several packages that offer fib() functions of one name or another, including the gmp package which always seems to "think bigger" than I do. I cannot (trivially) see how that author does it with fibnum(), because it is in a .Call() -- David
Courtesy of Wikipedia
Fibonacci<-c(1,1)
while (max(Fibonacci)<500){
Fibonacci<-c(Fibonacci, (max(Fibonacci) + ?(Fibanacci)))
}
How can I tell R to take the value one before the max value?
(Without
defining another variable)
(Probably super easy... I am a beginner...)
Thanks,
Georgie
[[alternative HTML version deleted]]
Michael Dewey info at aghmed.fsnet.co.uk http://www.aghmed.fsnet.co.uk/home.html
I, too, like the Michael/David/Wikipedia solution. But if this is homework, I would recommend using length() instead of max() for getting the last two items of the vector. Hope this is helpful, Dan Daniel J. Nordlund Washington State Department of Social and Health Services Planning, Performance, and Accountability Research and Data Analysis Division Olympia, WA 98504-5204
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.