请设计算法,求解上述问题。用结构化程序设计方法编程验证算法的正确性。 输入格式: 每行输入一个实数x和一个整数n,分别对应题目描述中的x和n,当x=0时候输入结束。输入数据之间由一个空格分隔。 输出格式: 每行输出为一个数,表示对应输入的计算结果。 样例输入: 2.00000 10 2.10000 3 2.00000 -2 0 0 样例输出: 1024.00000 9.26100 0.25000
时间: 2023-12-14 16:35:48 浏览: 30
根据题目描述,我们需要计算 $x^n$ 的值。我们可以使用分治算法来求解,将 $n$ 分解为两个较小的整数,递归求解,直到 $n=1$ 或 $n=0$,此时返回 $x^n$ 或 $1$。如果 $n$ 是负数,可以先计算 $x^{-n}$ 再取倒数。
具体算法如下:
1. 如果 $n=0$,返回 $1$。
2. 如果 $n=1$,返回 $x$。
3. 如果 $n<0$,返回 $1/power(x,-n)$。
4. 如果 $n$ 是偶数,返回 $power(x,n/2) * power(x,n/2)$。
5. 如果 $n$ 是奇数,返回 $x * power(x,n-1)$。
其中,$power(x,n)$ 表示计算 $x^n$ 的值。
下面是结构化程序设计方法的伪代码实现:
```
function power(x, n)
if n == 0 then
return 1
else if n == 1 then
return x
else if n < 0 then
return 1 / power(x, -n)
else if n is even then
return power(x, n/2) * power(x, n/2)
else
return x * power(x, n-1)
end if
end function
repeat
read x, n
if x == 0 then
exit repeat
end if
print power(x, n)
until false
```
接下来是完整的 Python 代码实现:
```python
def power(x, n):
if n == 0:
return 1
elif n == 1:
return x
elif n < 0:
return 1 / power(x, -n)
elif n % 2 == 0:
return power(x, n//2) * power(x, n//2)
else:
return x * power(x, n-1)
while True:
x, n = map(float, input().split())
if x == 0:
break
print("{:.5f}".format(power(x, int(n))))
```
注意,为了避免计算结果过长,我们在输出时只保留小数点后五位。