R1 Lecture 04 Class Notes

R1_04 Class Notes

编程基础:控制流&函数入门

by YU,Xiang

Mar 24 2015

控制流(判断和循环)

判断 if,else,ifelse

if(statement) {
    do something...
}
else {
    do something else...
}
练习1

写一个if else语句,功能是:
当y是偶数时,打印出y的一半,当y是奇数时,打印出3y+1

y <- 17
if(y%%2==0) print(y/2) else print(3*y+1)
## [1] 52
ifelse(statement,do,do else)
练习2

使用ifelse再次完成练习1,想一想输出结果为什么不同

ifelse(y%%2==0, print(y/2), print(3*y+1))
## [1] 52
## [1] 52
ifelse(y%%2==0, y/2, 3*y+1)
## [1] 52

循环 for, while, repeat

for(x in something){
    do ...
}
练习3

当y取1到10时,对每一个y做练习1

for(y in 1:10){
    if(y%%2==0)
        print(y/2)
    else
        print(3*y+1)
}
## [1] 4
## [1] 1
## [1] 10
## [1] 2
## [1] 16
## [1] 3
## [1] 22
## [1] 4
## [1] 28
## [1] 5
while(statement){
    do ...
}
练习4

用while做练习3

y <- 1
while(y<=10){
    if(y%%2==0)
        print(y/2)
    else
        print(3*y+1)
    y <- y+1    
}
## [1] 4
## [1] 1
## [1] 10
## [1] 2
## [1] 16
## [1] 3
## [1] 22
## [1] 4
## [1] 28
## [1] 5
repeat{
    do...
    if(statement) break
}
练习5

用repeat做练习3

y <- 1
repeat{
    if(y%%2==0)
        print(y/2)
    else
        print(3*y+1)
    y <- y+1
    if(y > 10) break
}
## [1] 4
## [1] 1
## [1] 10
## [1] 2
## [1] 16
## [1] 3
## [1] 22
## [1] 4
## [1] 28
## [1] 5

函数

什么是函数

给定一些输入值,按照某种计算方法,得到一个结果.函数可以重复使用,能大大简化程序

f1 <- function(x){
    if(x%%2==0) print(x/2)
    else print(3*x+1)
}

函数的结构

function_name <- function(input1,input2,...){
    do something...
    return_value
}
练习6

写一个函数,对于输入 x ,输出数学公式 2x+sin(x)cos(x) 的值

f2 <- function(x){
    2*x+sin(x)-cos(x)
}
练习7

生成一个 nn 的矩阵,其中第 i j 列的值是 i j 次方

f3 <- function(n){
    mat <- matrix(0,nrow=n,ncol=n)
    for(i in 1:n){
        for(j in 1:n){
            mat[i,j] <- i^j
        }
    }
    mat
}
练习8

Fibonacci数列是如下形式的数列:

1,1,2,3,5,8,13,21,...

请写一个函数 Fib <- function(N) 来生成Fibonacci数列的前N项

Fib <- function(N){
    fib <- rep(0,N)
    fib[1:2] <- c(1,1)
    for(i in 3:N){
        fib[i] <- fib[i-1] + fib[i-2]
    }
    fib
}
# 前二十项如下
Fib(20)
##  [1]    1    1    2    3    5    8   13   21   34   55   89  144  233  377
## [15]  610  987 1597 2584 4181 6765

第四周作业

1.写一个函数 Fib2 <- function(N) 生成N以内的Fibnacci数列

2.写一个函数 x3p1 <- function(N) 对N以内所有正整数,检验3X+1问题是否成立

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值