Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 递归入门_Python_Recursion - Fatal编程技术网

Python 递归入门

Python 递归入门,python,recursion,Python,Recursion,我需要写一个函数,它是对数字1到n求和的递归版本。它需要是递归的,我不知道怎么做,尽管我很容易就完成了迭代版本 关于递归,我只知道在函数中调用函数。非常感谢您对从何处开始的帮助 这是我做的迭代版本 def summ(n): result = 0 for i in range(1,n+1,1): result = result + i return result 与递归函数一样,定义一个基本情况和一个递归情况,然后在一个函数中实现它们,该函数检查它是否达到

我需要写一个函数,它是对数字1到n求和的递归版本。它需要是递归的,我不知道怎么做,尽管我很容易就完成了迭代版本

关于递归,我只知道在函数中调用函数。非常感谢您对从何处开始的帮助

这是我做的迭代版本

def summ(n):
    result = 0
    for i in range(1,n+1,1):
        result = result + i
    return result

与递归函数一样,定义一个基本情况和一个递归情况,然后在一个函数中实现它们,该函数检查它是否达到基本情况。该问题有多种递归算法,其中之一是:

基本情况。n==1。总数微不足道


递归案例。如果有n到n的数字之和,如何通过n+1求和?

与递归函数一样,定义基本情况和递归情况,然后在检查是否达到基本情况的函数中实现这些。该问题有多种递归算法,其中之一是:

基本情况。n==1。总数微不足道


递归案例。如果有n到n的数字之和,如何通过n+1得到该和?

当一个函数为了计算自己的结果,使用修改的参数调用自己并等待该函数调用返回,然后继续计算时,就会发生递归。然后,另一个函数调用可能会使用其他修改的参数再次调用自身,因此递归将继续,直到遇到函数不需要调用自身来计算其结果的情况,这种情况称为基本情况。对于从1到N的数字求和,基本情况显然可以是数字1。将其转换为代码,您将得到如下结果:

def addup(n):
  if n == 1:
    return 1
  else:
    new_n = # the new N which needs to be passed to the recursion
    return n+addup(new_n)

当函数为了计算自己的结果而使用修改的参数调用自己并等待该函数调用返回后再继续计算时,就会发生递归。然后,另一个函数调用可能会使用其他修改的参数再次调用自身,因此递归将继续,直到遇到函数不需要调用自身来计算其结果的情况,这种情况称为基本情况。对于从1到N的数字求和,基本情况显然可以是数字1。将其转换为代码,您将得到如下结果:

def addup(n):
  if n == 1:
    return 1
  else:
    new_n = # the new N which needs to be passed to the recursion
    return n+addup(new_n)

我认为这个答案是正确的,使用基本情况m==1

def summ(m):
    if m==1:
        return 1
    else:
        return m+summ(m-1)

我认为这个答案是正确的,使用基本情况m==1

def summ(m):
    if m==1:
        return 1
    else:
        return m+summ(m-1)

请看这里:当考虑递归时,我总是发现用一个英语句子来描述递归的工作原理是很有帮助的。在这种情况下,我可能会说,从1到n的和可以被描述为:n加上1到n-1的和。虽然你仍然需要定义基本情况等,但我总是发现一个好的句子可以帮助我可视化执行。请看这里:当考虑递归时,我总是发现用一个英语句子来描述递归的工作原理很有帮助。在这种情况下,我可能会说,从1到n的和可以被描述为:n加上1到n-1的和。尽管你仍然需要定义基本情况,我总是发现一个很好的句子可以帮助我可视化执行。根据你希望函数处理小于1的值的方式,我认为基本情况应该是n@MannyD:OP需要求1到n的和。在实践中,我只写sumxrangen+1。是的,我一直在考虑错误情况,如果你用0或更少的值调用你的函数,你最好准备好处理它,否则你可能会让你的函数无限重复。在正常情况下,是的,基本情况就足够了。根据您希望函数处理小于1的值的方式,我认为基本情况应该是n@MannyD:OP希望将数字1和n相加。在实践中,我只写sumxrangen+1。是的,我一直在考虑错误情况,如果你用0或更少的值调用你的函数,你最好准备好处理它,否则你可能会让你的函数无限重复。在正常情况下,是的,基本情况就足够了。