Scala的循环练习

45 阅读1分钟

案例1:

计算以下三个数列的和:1-1/2+1/3-1/4+1/5 ...+1/19

object Main {
	def main(args: Array[String]) = {
	        /**
     * 计算以下三个数列的和:

     * (3) 1-1/2+1/3-1/4+1/5 ...+1/19
     */
    var sum:Double = 0 //sum =0 sum 默认是int
    var i = 1
    while (i <=19 ){
        //如果是奇数就是+
        if(i%2 ==1){
            sum += 1.0 /i
        }else{ //否则就是-
        sum -= 1.0 /i
        }
        i +=1
      }
      println(s"sum ${sum}")
    }
}
<img src="" alt="" width="30%" />

案例2:判断是否为素数

object Main {
	def main(args: Array[String]) = {
	        val num = scala.io.StdIn.readInt()
    var isPrime: Boolean = true // 假设是素数

    // 处理特殊情况:小于2的数不是素数
    if (num <= 1) {
      isPrime = false
    } else {
      // 优化:只需要检查到平方根即可
      var i = 2
      while (i <= math.sqrt(num)) {
        // 如果能整除,说明不是素数
        if (num % i == 0) {
          isPrime = false
        }
        i += 1
      }
    }

    if (isPrime) {
      println(s"$num 是素数")
    } else {
      println(s"$num 不是素数")
    }
	}
}

案例3:判断小球落地的高度

object Main {
	def main(args: Array[String]) = {
	    var i = 0 //落地的次数
	    var high =100.0 //初始为100米
	    while(high >=0.5){
	        
	        high = high / 2.0
	        i += 1
	        println(s"经过${1}次落地后,小球的高度为${high}")
	    }
	    println(s"--经过${1}次落地后,小球的高度为${high},小于0.5的--")
	}
}

案例4

(1) 1元本金,10年后有多少元

object Main {
	def main(args: Array[String]) = {
	    var i =0
	    var money = 1.0
	    while(I<10){
	        //每一年的钱都在去年的钱,增加10% ==== 乘以1.1
	        money =money *1.1
	        i +=1
	        println(s"$i 年之后,有$money 元")
	    }
	    println(s"10年之后,总的钱变成了:$money")
	}
	//本金 1.0元 ===========1.家庭背景 
	// 时间:多少年 ========+-++++2。年龄
	// 年化收益率:10% ======3.能力
}

(2) 1元本金,达到1000元要多少年

object Main {
	def main(args: Array[String]) = {
	    var i =0
	    var money = 1.0
	    while(money<1000){
	        //每一年的钱都在去年的钱,增加10% ==== 乘以1.1
	        money =money *1.1
	        i +=1
	        println(s"$i 年之后,有$money 元")
	    }
	    println(s"10年之后,总的钱变成了:$money")
	}
	//本金 1.0元 ===========1.家庭背景 
	// 时间:多少年 ========+-++++2。年龄
	// 年化收益率:10% ======3.能力
}