————学习笔记————————————
1、循环
(1)本金10000元存入银行,年利率是百分之三,每过1年,将本金和利息相加作为新的本金。计算10年之后,获得本金是多少?
用for循环
sum=10000
for(i in 1:10){
sum=sum+0.03*sum
}
print(sum)
}
2、循环+条件语句
(1)找出1:1000既不能被6整除,又不能被8整除的所有数
for(i in 1:1000){
if(i%%6!=0 & i%%8!=0){
print(i)
}
}
(2)有1元,2元,5元的钱,现在凑成50元,有多少种可能性?
count=0####组合总数
cc=list()####存放具体怎么组合
for(a in 0:50){
for(b in 0:25){
for(c in 0:10){
if(5*c+2*b+a==50){
count=count+1
cc[[count]]=c(a,b,c)
}
}
}
}
print(count)
print(cc)
(3)所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。如153= 1 3 + 5 3 + 3 3 1^{3}+5^{3}+3^{3} 13+53+33,请统计水仙花数的个数?
a=0
for(i in 1:9){
for(j in 0:9){
for(k in 0:9){
if(i^3+j^3+k^3==i*100+j*10+k){
a=a+1
}
}
}
}
print(a)
3、自编函数
(1)两个球分别为红球和蓝球,进行放回随机抽样,直到抽到m个蓝球为止,一共需要抽取多少次?这个过程进行n次,抽取次数平均值是多少?
num=function(m,n){
total=0 #####3000试验中总的抽取次数
for(i in 1:n){
x=c(0,1)
sum=0 ####蓝球出现的次数
count=0 ####抽取的次数
while (sum<m) {
count=count+1
lan=sample(x,size=1,replace=T)
if(lan==1){
sum=sum+1
}else{sum=sum+0}
}
total=total+count
}
mean=total/n
return(mean)
}
> num(6,3000)
[1] 12.02067
(2)斐波纳契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……
请编写一个函数,返回裴波那契数列的第i个数数值。
方法1:循环+判断
fib=function(i){
fib1=1
fib2=1
if(i==1|i==2){
return(1)
}
for(j in 3:i) {
fib_1 = fib2
fib2 = fib1 + fib2
fib1 = fib_1
}
return(fib2)
}
fib(7)
方法二 递归
这里不展示代码