表示递归求和

时间:2019-07-15 04:29:39

标签: python math

编码问题: 当我收到输入2时,我想接收输出2作为我的基本情况。高于此的任何输入都将创建求和。预先抱歉,我没有很高的声誉来发布图像,但是我仍然使用E作为求和的简写,并为[x,y]作求和的范围。示例:

Input: 3
Output: 
3+2+1
OR
E[i=1,3] i

Input: 4
Output: 
4+3+2+1+3+2+1+2+1+1 
OR
E[j=1,4] E[i=1,j] i

Input: 5 
Output: 
5+4+3+2+1+4+3+2+1+3+2+1+2+1+1+4+3+2+1+3+2+1+2+1+1+3+2+1+2+1+1+2+1+1+1 
OR
E[k=1,5] E[j=1,k] E[i=1,j] i

以此类推。输入应添加一个求和,并将所述输入用作第一次求和的终点。我的第一个想法是递归地添加for循环,因为我们通常将求和表示为具有范围的循环。我敢肯定这是可能的,但是我还没有成功解决这个问题。我用另一种方法来代数求和。第一个求和等于(n ^ 2 + n)/ 2,我可以继续重复此等式,直到我转换了每个求和。这种方法对我来说最有意义,但是我也没有成功。如果我遗漏了一些东西,并且表示重复的代码求和是标准的,或者任何人有任何想法可以抛出我的想法,我将非常感激。我非常困惑,希望大家能像我一样有趣。

1 个答案:

答案 0 :(得分:1)

这是解决您问题的递归代码。对于输入ValueError: time data 19790101 does not match format '%Y%b%d' (match) 的基本情况,它可以提供您想要的结果2 -尽管我不同意这种选择,但现在我同意了。对于小于2的任何值,它将返回错误。我的代码首先构建一个整数列表,然后打印所需的总和-使您更轻松地使用这些数字进行操作,例如将这些数字进行实际求和。我还提供了pytest的测试代码-如果我的输入行被注释掉,我的代码就会通过测试。

2