今天继续控制结构与函数部分的练习,最后一题了,进度有点儿慢哦。

[题目] 编写函数计算xn,其中n是整数,使用如下递归定义:

  • xn = y2,如果n是正偶数的话,这里的y = xn/2
  • x = x.xn-1,如果n是正奇数的话;
  • x0 = 1;
  • xn = 1/x-n,如果n是负数的话。

不得使用return语句。

Ans:

scala> def x_n(x : Double, n : Int) : Double = {
    |     if (n > 0 && n%2 == 0) x_n(x, n/2) * x_n(x, n/2)
    |     else if (n > 0 && n%2 == 1) x * x_n(x, n - 1)
    |     else if (n == 0) 1
    |     else 1 / x_n(x, -n)
    | }
x_n: (x: Double, n: Int)Double

scala> x_n(2, -2)
res31: Double = 0.25

scala> x_n(2, -81)
res32: Double = 4.1359030627651384E-25

scala> x_n(2, 113)
res33: Double = 1.0384593717069655E34

scala> x_n(2, 16)
res34: Double = 65536.0

scala> x_n(2, 0)
res35: Double = 1.0

scala> x_n(2, 10)
res36: Double = 1024.0

scala> x_n(2, 9)
res37: Double = 512.0

scala> x_n(2, 18)
res38: Double = 262144.0

scala> x_n(2, 8)
res39: Double = 256.0

enter image description here