我正在使用 Python,我想找到两个数字之间的整数之和:
number1 = 2
number2 = 6
ans = (?)
print ans
#the numbers in between are 3,4,5
请给我数学公式或 Python 代码来执行此操作。
暗示:
给定两个数字 A 和 B(包括两者),其中 B > A,A 和 B 之间的值之和由下式给出
B(B + 1)/2 - (A - 1)A/2
=(B^2 + B - A^2 + A)/2
=((B - A)(B + A) + (B + A))/2
=(B + A)(B - A + 1)/2
如果 A 和 B 都是互斥的,则将 B 替换为 B - 1,将 A 替换为 A + 1。其余的我留给你作为练习
通读Python 表达式以将数学表达式转换为 Python 代码
注意 不幸的是,SO 不支持 MathJax,否则上述表达式的格式可能会更好
你需要这个来得到总和:
ans = number1 + number2
或者这不是你想做的?既然你评论:the numbers in between are 3,4,5
,你的意思是这个吗?
>>> for i in range(number1+1,number2):
... print i
...
3
4
5
编辑:
所以,OP还需要两个数字之间的所有数字的总和:
>>> number1 = 2
>>> number2 = 6
>>> sum(range(number1 + 1, number2))
12
第二部分由 OP 给出。
我喜欢 Grijesh 的回答,简单而优雅。这是另一个使用递归调用的方法:
global sum
def sum_between(a, b):
global sum
# base case
if (a + 1) == b:
return sum
else:
sum += (a + 1)
return sum_between(a + 1, b)
不像使用 sum(range(a+1, b)) 那样直接。但只是作为递归函数的练习很有趣。