今天继续控制结构与函数部分的练习,最后一题了,进度有点儿慢哦。
[题目] 编写函数计算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
阅读(2204) | 评论(0) | 转发(0) |