Gab*_*iel 5 python algorithm math
好吧所以我感觉有点愚蠢因为不知道这一点,但是一位同事问我所以在这里问:我写了一个python算法来解决他的问题.给定x> 0将所有数字从1添加到x.
def intsum(x):
if x > 0:
return x + intsum(x - 1)
else:
return 0
intsum(10)
55
Run Code Online (Sandbox Code Playgroud)
首先,这种类型的等式是什么,得到这个答案的正确方法是什么,因为使用其他方法显然更容易?
Lar*_*rry 15
这是递归,但由于某种原因,你将它标记为像阶乘一样.
无论如何,从1到n的总和也很简单:
n * ( n + 1 ) / 2
(如果您愿意,可以使用特殊情况作为负值.)
将递归定义的整数序列转换为可以以封闭形式表达的整数序列是离散数学的一个迷人部分 - 我衷心推荐具体数学:计算机科学基础,由Ronald Graham,Donald Knuth和Oren Patashnik(见关于它的维基百科条目).
然而,fac(x) = fac(x - 1) + x
根据一个着名的轶事,你所展示的具体顺序是高斯在小学一年级时解决的 - 老师给了学生一个总数为1到100的大学生,以便让他们在虽然,但两分钟后,年轻的高斯得到了答案,5050,并解释说:"我注意到我可以将第一个,第一个和最后一个,100个,即101个;和第二个,第2个和下一个相加到最后,99,那又是101;显然重复了50次,所以,50次101,5050".证据不严谨,但对于6岁的人来说非常正确和合适;-).
以同样的方式(加上真正的初等代数)你可以看到,正如许多人已经说过的那样,一般情况是(N * (N+1)) / 2
(产品总是均匀的,因为其中一个数字必须是奇数且一个偶数;因此除以2将是总是根据需要产生一个整数,没有余数).
归档时间: |
|
查看次数: |
887 次 |
最近记录: |