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. 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]]
The "easy" solution to compute the Fibonacci numbers is fibo <- function(n,a=1,b=1){ if (n == 1) return(a) if (n == 2) return(b) return(fibo(n-1,b,a+b)) } It avoids double recursion. It is, however, not as resource efficient as a loop since R does not do tail recursion elimination. On Apr 20, 2011, at 11:42 AM, 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. > > 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]] > > ______________________________________________ > 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. >
On Wed, Apr 20, 2011 at 11:42:38AM +0200, 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. > > 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)Is it allowed to use length() function? If so, then try the following Fibonacci<-c(1,1) while (max(Fibonacci)<500){ Fibonacci<-c(Fibonacci, Fibonacci[length(Fibonacci) - 1] + Fibonacci[length(Fibonacci)]) } Petr Savicky.
Fibonacci <- c(1, 1) while (max (Fibonacci) < 500){ Fibonacci <- c(Fibonacci, sum(tail(Fibonacci, 2))) } -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Georgina Imberger Sent: Wednesday, April 20, 2011 5:43 AM To: r-help at r-project.org Subject: [R] Fibonacci 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. 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]] ______________________________________________ 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. ================================== Please consider the environment before printing this e-mail Cleveland Clinic is ranked one of the top hospitals in America by U.S.News & World Report (2010). Visit us online at http://www.clevelandclinic.org for a complete listing of our services, staff and locations. Confidentiality Note: This message is intended for use\...{{dropped:13}}
Another solution: while (Fibonacci[1] < 500) Fibonacci <- c(sum(Fibonacci[c(1,2)]), Fibonacci) While this adds the sum before the existing values, the length or tail function or avoided, but even with reordering, its faster (Fibonacci[length(Fibonacci):1]) Best regards Bart -- View this message in context: http://r.789695.n4.nabble.com/Fibonacci-tp3462636p3463050.html Sent from the R help mailing list archive at Nabble.com.
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 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
Reasonably Related Threads
- Simple 95% confidence interval for a median
- MCJIT -- Poor run-time performance for Fibonacci example in LLVM 3.8.1
- can't build/run after adding lib to Fibonacci example, even reverting the complete llvm tree does not help
- can't build/run after adding lib to Fibonacci example, even reverting the complete llvm tree does not help
- [LLVMdev] JIT API example (fibonacci)