问题描述:编写函数,求出1^2-2^2+3^2-4^2+⋯+97^2-98^2+99^2-100^2。 函数以n为参数; 请分别用老师上课讲的4种方法实现,并完成封装。 n由用户从键盘输入:100。 验证结果:-5050。
时间: 2024-05-01 20:23:58 浏览: 15
方法一:使用循环求解
```python
def calc_sum1(n):
s = 0
for i in range(1, n+1):
if i % 2 == 1:
s += i**2
else:
s -= i**2
return s
n = int(input("请输入n的值:"))
result = calc_sum1(n)
print("1^2-2^2+3^2-4^2+...+99^2-100^2的结果为:", result)
```
方法二:使用列表推导式求解
```python
def calc_sum2(n):
s = sum([i**2 if i % 2 == 1 else -i**2 for i in range(1, n+1)])
return s
n = int(input("请输入n的值:"))
result = calc_sum2(n)
print("1^2-2^2+3^2-4^2+...+99^2-100^2的结果为:", result)
```
方法三:使用递归求解
```python
def calc_sum3(n):
if n == 1:
return 1
else:
if n % 2 == 1:
return n**2 - calc_sum3(n-1)
else:
return -n**2 + calc_sum3(n-1)
n = int(input("请输入n的值:"))
result = calc_sum3(n)
print("1^2-2^2+3^2-4^2+...+99^2-100^2的结果为:", result)
```
方法四:使用数学公式求解
```python
def calc_sum4(n):
return (n * (n+1) * (2*n+1) * (-1)**n) // 6
n = int(input("请输入n的值:"))
result = calc_sum4(n)
print("1^2-2^2+3^2-4^2+...+99^2-100^2的结果为:", result)
```
四种方法的封装如下:
```python
def calc_sum1(n):
s = 0
for i in range(1, n+1):
if i % 2 == 1:
s += i**2
else:
s -= i**2
return s
def calc_sum2(n):
s = sum([i**2 if i % 2 == 1 else -i**2 for i in range(1, n+1)])
return s
def calc_sum3(n):
if n == 1:
return 1
else:
if n % 2 == 1:
return n**2 - calc_sum3(n-1)
else:
return -n**2 + calc_sum3(n-1)
def calc_sum4(n):
return (n * (n+1) * (2*n+1) * (-1)**n) // 6
n = int(input("请输入n的值:"))
result1 = calc_sum1(n)
result2 = calc_sum2(n)
result3 = calc_sum3(n)
result4 = calc_sum4(n)
print("1^2-2^2+3^2-4^2+...+99^2-100^2的结果为:")
print("方法一的结果为:", result1)
print("方法二的结果为:", result2)
print("方法三的结果为:", result3)
print("方法四的结果为:", result4)
```
注意:在方法三和方法四中,由于递归深度可能会超过默认值(1000),因此需要通过 sys 模块修改递归深度,例如:
```python
import sys
sys.setrecursionlimit(100000) # 设置递归深度为 100000
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)