Fibonacci function from book “The Book of R”

五迷三道 提交于 2019-12-13 03:49:48

问题


What modification is needed so function returns a sequence without the number 1 duplicated?

myfib<- function(){
        fib.a<-1
        fib.b<- 1
        cat(fib.a,", ",fib.b,",",sep="")
        repeat{
                temp<- fib.a+fib.b
                fib.a<-fib.b
                fib.b<-temp
                cat(fib.b,", ", sep="")
                if(fib.b>150){
                        cat("BREAK NOW...")
                        break
                }
        }
}

instead of 1, 1, 2, 3, 4, 8, 13, 21, 34, 55, 89, 144, 233, BREAK NOW...

return 1, 2, 3, 4, 8, 13, 21, 34, 55, 89, 144, 233, BREAK NOW...


回答1:


Remove the first number from your cat:

myfib <- function() {
    fib.a <- 1
    fib.b <- 1
    cat(fib.b, ", ", sep="")
    repeat {
        temp <- fib.a + fib.b
        fib.a <- fib.b
        fib.b <- temp
        cat(fib.b, ", ", sep="")
        if(fib.b > 150) {
            cat("BREAK NOW...")
            break
        }
    }
}

Or change the initial values:

myfib <- function() {
    fib.a <- 1
    fib.b <- 2
    cat(fib.a, ", ", fib.b, ", ", sep="")
    repeat {
        temp <- fib.a + fib.b
        fib.a <- fib.b
        fib.b <- temp
        cat(fib.b, ", ", sep="")
        if(fib.b > 150) {
            cat("BREAK NOW...")
            break
        }
    }
}


来源:https://stackoverflow.com/questions/46534924/fibonacci-function-from-book-the-book-of-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!