递归函数对第一个奇数python的总和

时间:2018-02-10 16:52:20

标签: python python-3.x recursion

我试图将下面的代码转换为递归函数,但似乎我很难混淆如何在递归函数中编写。可以帮我提一些想法吗?

基本上,我在下面生成的是前n个奇数的总和。

def sum_odd_n(n):
    total=0
    j=2*n-1
    i=1
    if i>j:
        return 1
    else: 
        total =((j+1)/2)**2
    i+=2
    return total


> >>> sum_odd_n(5)
> 25.0
> >>> sum_odd_n(4)
> 16.0
> >>> sum_odd_n(1)
> 1.0

4 个答案:

答案 0 :(得分:1)

这有点像家庭作业,所以我会提供一些建议而不是解决方案。

递归就是表达一个问题。

假设您知道从N到N-2的奇数之和。 你能用这个总和和函数本身(或相关的辅助函数)来写总和吗?

答案 1 :(得分:1)

递归函数至少有一个基本案例和至少一个递归调用。以下是一些提示:

def f(n):
  # Base case - for which
  # n do we already know the answer
  # and can return it without
  # more function calls? (Clearly,
  # this must also terminate any
  # recursive sequence.)

  if n == ???:
    return ???

  # Otherwise, lets say we know the answer
  # to f(n - 1) and assign it to
  # the variable, 'rest'

  rest = f(n - 1)

  # What do we need to do with 'rest'
  # to return the complete result

  return rest + ???

填写问号,你就会得到答案。

答案 2 :(得分:1)

尝试:

def sum_of_odd(n):
if n>0:
    x=(n*2)-1
    return x+sum_of_odd(n-1)
else:
    return 0

答案:

sum_of_odd(5)

将是:

25

答案 3 :(得分:0)

尝试:

def sum_odd_n(n):
    if n>0:
        if n==1:
            return 1
        else:
            return 2*n-1 + sum_odd_n(n-1)