控制結構與函式練習(三)

2gua發表於2013-02-05

今天繼續控制結構與函式部分的練習,最後一題了,進度有點兒慢哦。

[題目] 編寫函式計算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

相關文章