使用递归函数求和

时间:2014-11-16 14:13:34

标签: python python-2.7 recursion

我是python编程的新手,我在某些方面仍然遇到困难。现在我在使用递归函数。 我的任务是通过使用递归函数从0到3求和该数字的平方我的代码到目前为止看起来像这样:

sum = 0
n = 3
i = 1

def summe(i,sum):
    sum = sum +(i*i)
    if(i <= n):
       i = i+1
       print sum
       return summe(i, sum)
    else:
       print sum

输出为空,即使if子句中的总和没有打印出来。我按照我在网上找到的例子,但我没有看到我做了什么特别错误。

4 个答案:

答案 0 :(得分:0)

您从未调用过函数summe

答案 1 :(得分:0)

函数内部的变量有一个局部范围,你需要在函数中初始化:

def summe(i=1,sum=0):

最好将n传递给函数并在函数内部使用循环!

    >>> def cal_sq(n):
...    return sum(cal_sq(i)+(i*i) for i in range(1,n+1))

答案 2 :(得分:0)

您的输出为空,因为您实际上从未调用该函数,您只需定义它即可。此外,尝试避免命名变量本机Python函数和关键字,在您的情况sum已经是一个函数。我将采用的方式如下

def addSquares(n, stop):
    if n == stop:
        return n*n
    else:
        return n*n + addSquares(n+1, stop)  # Here is the recursion

例如

>>> addSquares(0, 3)
14

答案 3 :(得分:0)

它会告诉你如何调用递归,如下所示。我不明白你想要计算什么所以只是递归地添加n你可以改变你自己的计算。

sum = 0
n = 3
i = 1
global allsum
allsum = 0

def sum(n):
    print n
    global allsum
    allsum= allsum + n

    if n > 0:
        sum(n-1)
sum(3)
print allsum