function <- function(p){
i <- 2
r <- 0
while(i < p) {
q <- (p/i)
while(q>=1) {
q=(q-1)
}
if (q==0) {
r=1
} else
i=i+1
}
return(r)
}
This function stays in some kind of loop when I enter 4 as a function value.
It immediately returns 0 when I inter 3 though.
I don't seem te get why it does not give me just a result. Can someone tell
me why it stays in a loop?
Kind regards,
Michiel
--
View this message in context:
http://r.789695.n4.nabble.com/function-stays-in-loop-tp4651619.html
Sent from the R help mailing list archive at Nabble.com.
Hello, Because p/i == 4/2 == 2 thenyou subtract 1 unil q == 0 and i = i+1 is never executed. (Use print statements to check it.) Hope this helps, Rui Barradas Em 02-12-2012 11:57, Mkkl escreveu:> function <- function(p){ > i <- 2 > r <- 0 > while(i < p) { > q <- (p/i) > while(q>=1) { > q=(q-1) > } > if (q==0) { > r=1 > } else > i=i+1 > } > return(r) > } > > This function stays in some kind of loop when I enter 4 as a function value. > It immediately returns 0 when I inter 3 though. > I don't seem te get why it does not give me just a result. Can someone tell > me why it stays in a loop? > > Kind regards, > > Michiel > > > > -- > View this message in context: http://r.789695.n4.nabble.com/function-stays-in-loop-tp4651619.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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 12/02/2012 10:57 PM, Mkkl wrote:> function<- function(p){ > i<- 2 > r<- 0 > while(i< p) { > q<- (p/i) > while(q>=1) { > q=(q-1) > } > if (q==0) { > r=1 > } else > i=i+1 > } > return(r) > } > > This function stays in some kind of loop when I enter 4 as a function value. > It immediately returns 0 when I inter 3 though. > I don't seem te get why it does not give me just a result. Can someone tell > me why it stays in a loop? >Hi Michiel, Elementary really. You have programmed a Rube Goldberg test for whether a number is even or odd. If it returns, the number is odd, if it gets into an infinite loop. Play around with the initial value of i for more fun. Jim